macOS 端工具,用于将 Rive 文件或图片/视频推送到配对的 Wear OS 手表进行预览。支持通过本地 Wi-Fi 服务器或 ADB 进行文件传输。
- 通过状态栏菜单操作。
- 启动本地 HTTP 服务器 (端口 8080) 共享文件。
- 支持上传单个 Rive 文件 (
.riv/.rive)。 - 支持上传单个或多个图片/视频文件(自动处理为 512x512,图片为 PNG,视频为 MP4,并打包为 zip)。
- 通过 WebSocket (
/ws) 实现客户端更新通知。 - 支持通过 ADB 将文件推送到连接的 Wear OS 设备的应用专用目录 (
/storage/emulated/0/Android/data/com.example.watchview/files/)。- 自动检测连接的 ADB 设备。
- 状态栏菜单提供设备单选功能。
- 推送前自动清空目标目录。
- 集成 Sparkle 实现应用内自动更新检查和手动检查更新。
本应用使用 Sparkle 框架通过 GitHub Releases 进行更新。由于没有苹果开发者签名,采用的是非签名更新方式。
发布新版本步骤:
-
更新应用版本号:
- 在 Xcode 项目中,打开
watch rip/Info.plist文件。 - 修改
CFBundleShortVersionString(例如: "1.0.1") 和CFBundleVersion(例如: "2")。确保这两个值都比上一版本高。
- 在 Xcode 项目中,打开
-
构建应用:
- 在 Xcode 中,选择
Product->Archive。 - 等待构建完成,Xcode 会打开 Organizer 窗口。
- 在 Organizer 中,选中刚刚生成的 Archive。
- 点击右侧的 "Distribute App" 按钮。
- 选择 "Copy App" 作为分发方式。
- 选择一个导出位置。Xcode 会将
.app文件导出到你指定的位置。
- 在 Xcode 中,选择
-
打包应用:
- 找到导出的
.app文件 (例如Watch RIP.app)。 - 将其压缩为
.zip文件。命名规则很重要:通常使用AppName-Version.zip的格式,例如Watch-RIP-1.0.1.zip。确保这个文件名与你将在appcast.xml中使用的文件名一致。
- 找到导出的
-
创建 GitHub Release:
- 访问你的 GitHub 仓库页面:
https://github.com/jadon7/Watch-RIP-MAC。 - 点击 "Releases" -> "Create a new release" (或 "Draft a new release")。
- Tag version: 输入与你的版本号对应的 Git 标签,例如
v1.0.1。确保这个标签存在于你的 Git 历史中 (通常在你准备发布前打上 tag:git tag v1.0.1 && git push origin v1.0.1)。 - Release title: 输入版本标题,例如
版本 1.0.1。 - Describe this release: 编写版本更新日志或说明。
- Attach binaries: 将你上一步创建的
.zip文件(例如Watch-RIP-1.0.1.zip)拖拽或上传到这里。 - 点击 "Publish release"。
- 访问你的 GitHub 仓库页面:
-
更新
appcast.xml:- 在你的本地仓库中,打开项目根目录下的
appcast.xml文件。 - 在
<channel>标签内,添加一个新的<item>块,放在所有旧<item>块的最上方。 - 填充新
<item>的信息:<title>: 你的版本标题 (例如版本 1.0.1)。<sparkle:releaseNotesLink>: 指向你刚刚创建的 GitHub Release 页面的 URL (例如https://github.com/jadon7/Watch-RIP-MAC/releases/tag/v1.0.1)。<pubDate>: 当前的发布日期和时间 (遵循 RFC 822 格式,例如Sun, 17 Mar 2024 12:00:00 +0800)。<enclosure>:url: 指向你在 GitHub Release 中上传的.zip文件的下载链接 (例如https://github.com/jadon7/Watch-RIP-MAC/releases/download/v1.0.1/Watch-RIP-1.0.1.zip)。确保这个链接正确!sparkle:version: 对应Info.plist中的CFBundleVersion(例如2)。sparkle:shortVersionString: 对应Info.plist中的CFBundleShortVersionString(例如1.0.1)。length:.zip文件的精确大小 (以字节 Bytes 为单位)。你可以通过 Finder 的"显示简介"或ls -l命令获取。这个值必须准确!
<sparkle:minimumSystemVersion>: (可选) 应用所需的最低 macOS 版本。
- 保存
appcast.xml文件。
- 在你的本地仓库中,打开项目根目录下的
-
提交并推送
appcast.xml:- 将修改后的
appcast.xml文件提交到你的 Git 仓库。 git add appcast.xmlgit commit -m "更新 appcast.xml 至版本 1.0.1"git push origin main(同时也会推送到 GitHub)
- 将修改后的
完成! 现在,当用户运行旧版本的 Watch RIP 时,Sparkle 会自动(或手动)检查 https://raw.githubusercontent.com/jadon7/Watch-RIP-MAC/main/appcast.xml,发现新的版本信息,并提示用户下载和安装你在 GitHub Release 中提供的 .zip 文件。
- 版本号一致性: 确保
Info.plist中的版本号 (CFBundleShortVersionString,CFBundleVersion) 与appcast.xml中对应<item>的版本号 (sparkle:shortVersionString,sparkle:version) 以及 GitHub Release 的 Tag 和.zip文件名保持逻辑一致。 - 下载链接和文件大小:
appcast.xml中的enclosure url和length必须准确无误,否则更新会失败。 - Appcast URL:
Info.plist中的SUFeedURL和appcast.xml中的<link>标签都应指向appcast.xml在 GitHub 上的 Raw URL。 - 签名 (可选但推荐): 为了提高安全性,可以考虑对你的应用更新进行 EdDSA 签名。这需要生成密钥对,并将公钥添加到
Info.plist(SUPublicEDKey),在生成.zip文件后对其签名,并将签名添加到appcast.xml(sparkle:edSignature)。具体步骤请参考 Sparkle 文档。
- 处理 IP 地址的显示 BUG
- 在状态菜单显示功能
- 添加 ADB 设备检测