一句话:只在「Mac + Xcode + Apple Watch Series 11 46mm + watchOS 27」上验证过。条件不符的话,大概率要自己改代码,或者根本用不了。
| 手表 | 屏幕(像素) | 能不能用 |
|---|---|---|
| Series 11 46mm | 416×496 | ✅ 版式按它调的。模拟器上完整验证;真机跑过上一版,本版待真机长期验证 |
| Series 10 46mm | 416×496 | 🟡 分辨率和上面完全相同,理论上直接可用,没实测过 |
| Series 11 / 10 42mm | 374×446 | |
| Series 9 45mm | 396×484 | |
| Series 9 41mm | 352×430 | |
| Ultra 3 49mm | 422×514 | |
| SE 3、更早的型号 | — | ❓ 没测过 |
scripts/prepare_frames.swift 的画布尺寸和 App/GlassClock.swift 的时间坐标,再在对应尺寸的模拟器上调。仓库暂时没有提供这些尺寸的版本。
- Series 10 46mm:大概率能。屏幕和 Series 11 46mm 一模一样(416×496),但没有在 S10 上实测。
- Series 10 42mm、Series 9(41 / 45mm):能装上、能跑,但画面不对:版式是按 416×496 写死的,动画会被裁切或错位,竖排时间可能跑出屏幕。不想改代码的话,不建议尝试。
- S9、S10 都能升级到 watchOS 27(Xcode 里有对应的模拟器),系统版本不是障碍,屏幕尺寸才是。
- 只在 watchOS 27 上验证过(模拟器 27.0,真机 27.0.1)。
- 工程最低能装到 watchOS 11,但低于 27 的版本完全没测。效果依赖系统表盘的几个非公开行为:关掉缩放后图片能超出槽位铺满整屏、先显示静帧才能拿到 2 倍像素密度。换个系统版本,这些行为可能不一样:画面可能放大一倍、铺不满,或者干脆不动。
- 以后的 watchOS 更新也可能让它失效,没有任何保证。
❌ 不能。
- 必须用 Mac 上的 Xcode 编译、签名,再装到手表。
- 不在 App Store 或 TestFlight 上:用了非公开接口,又含游戏素材,上不了架。
- iPhone「Watch」App 里的「分享表盘」只分享表盘布局,不包含 App 本身。对方手表上没装这个 App,收到的表盘就是空的。
- AltStore、Sideloadly 等侧载工具也不行:实测手表会直接拒绝安装免费签名的 App。
- 用免费 Apple ID 签名的话,7 天后过期,之后每周都得用 Mac 重装一次。
问 AI,不要问主播。 主播没有精力一对一帮忙排查,私信和评论区的安装问题一律不回。
问 AI(ChatGPT、DeepSeek 等都行)时,把这些一起发给它,它才答得准:
- 完整的报错原文:Xcode 的红字报错、手表或 iPhone 上的提示,原样复制或截图,不要自己概括;
- 你的环境:手表型号与尺寸、watchOS 版本、Mac 和 Xcode 版本、是否开着代理或 VPN;
- 你做到了教程的第几步;
- 如果是表盘不动或画面不对:素材 App 首页「最近事件」的截图;
- 本仓库的 README、教程 和 原理:把文件内容贴给它,或者让它读仓库链接。
可以直接这样开头:
我在用一个把视频做成 Apple Watch 表盘的开源项目,说明文档附在下面。我的环境是……,做到教程第 X 步时出现了下面的报错……,请帮我排查。
- 必须有一部和手表配对的 iPhone,加一根数据线。
- 第一次让 Xcode 连上手表可能要折腾很久:开发者模式、代理软件、蓝牙、Wi-Fi 都可能卡住,见 教程第 5 步。
- 只能用系统「模块化」表盘,其他复杂功能槽位都得关掉,不能和别的复杂功能一起用。
- 放下手腕(常亮显示)时动画会停,这是系统限制;偶尔先卡几秒到十几秒;耗电情况没测过。
以上都能接受,再往下看。
把《女神异闻录 3 Reload》官网开场视频做成 Apple Watch 系统表盘上的高清循环动画,再配一列游戏主菜单风格的竖排时间。也可以换成你自己的视频。
它不是一个需要一直开着的 App:动画和时间都由系统的「模块化」表盘显示,用的是两个复杂功能(complication)。装好、设置一次之后,素材 App 可以完全关掉。
非官方粉丝作品,课程作业,与 ATLUS / SEGA 无关。
media/里的 80 帧取自官网视频,版权归 ATLUS / SEGA,仅供作业使用、不在 MIT 许可范围内,请勿再分发。
- 全屏高清动画:416×496 像素、12 fps 循环,铺满 Series 11 46mm 的整块屏幕,不是只占中间一小块。
- P3R 菜单风格的时间:时、分、日期、星期四行压叠、倾角交错,水色半透明配深蓝影子,每分钟由系统更新。
- 自动恢复:动画偶尔卡住时,看门狗和后台自愈会自己把它救回来,不用手动打开 App。
- 诊断页:素材 App 首页显示最近的交接记录,出问题时截图即可定位。
| 项目 | 要求 |
|---|---|
| 电脑 | Mac,Xcode 27 或更新 |
| 手表 | Apple Watch,watchOS 27;版式按 Series 11 46mm(416×496)调好,其他尺寸需要调整参数 |
| 账号 | Apple ID 即可(免费账号签名 7 天后过期,需重新安装) |
| 素材 | 已自带 80 帧动画;想换视频时需要一段横屏视频 |
git clone https://github.com/Hastur-02/P3R-LiveClock.git P3R-LiveClock
cd P3R-LiveClock
open LiveClock.xcodeproj然后在 Xcode 里填自己的开发团队、装到手表,在手表上把「模块化」表盘的中央设为「P3R 动画研究」、右下设为「P3R 玻璃时间」。
完整步骤、手表连接排错和自定义方法见 教程。
watchOS 不开放第三方表盘,这里用的是复杂功能的几个非公开行为:关掉系统缩放后,复杂功能的图片可以按原尺寸超出槽位、铺满整屏;动画图片要先显示一张静帧才能拿到 2 倍像素密度。详见 原理。
- 放下手腕(常亮显示)时动画会停:watchOS 在常亮状态下暂停所有动画,这是系统限制,抬腕后继续播放。
- 偶尔先卡几秒到十几秒:高清动画要分两步交给表盘,中途断掉时会停在静帧,由自动恢复机制补救,详见 原理。
- 依赖非公开字段(
applyScalingAndCircularMasking、prefersFilterOverTransition):不能上架 App Store,系统更新也可能让效果失效。 - 真机验证有限:主要在 watchOS 27 模拟器上验证,真机长期稳定性、内存与耗电还在观察。
| 路径 | 内容 |
|---|---|
App/ |
手表 App:复杂功能数据源(ComplicationResearch.swift)、竖排时间(GlassClock.swift)、自动恢复与诊断(HandoffHealth.swift) |
PhoneApp/ |
iPhone 配套 App(可选,免费签名下无法经由它安装到手表) |
scripts/prepare_frames.swift |
从视频生成动画帧(换视频时用) |
assets/ |
换视频时放你的视频(不入库) |
media/ |
80 帧动画、预热静帧与参数(取自官网视频,仅供作业) |
docs/ |
教程与原理 |
代码与文档以 MIT 许可证开源;media/ 里的动画帧不在许可范围内,版权归 ATLUS / SEGA。