SOURCE RECORD · D06

D06 · 花点记账

Local development and release identity explanation

公开摘录 · 截取原件于 2026-09-12 / Captured 2026-09-12

保留原行号。个人/账户信息如有删除,已用 REDACTED 标识。原文件 SHA-256 只用于识别截取时的本机原文件;不能证明编写或提交时间,也不等于脱敏下载文件的哈希。

Original line numbers are retained. Redactions are explicitly marked. The original full-file hash identifies a captured local file, not its creation/submission time or the redacted download. Public-file hashes are listed separately. This is an existing local document, not proof of text submitted to Apple.

Project key: huadian
Original relative path: Verification/serverless-apple-capabilities.md
Captured: 2026-09-12T18:57:15+08:00
Original full-file SHA256: 985bdbfa3e89dc1498d38306bd8032baa38950e6e0ba41228f9b56e967154ca5
Evidence level: pre-existing local document; submission not verified
Build correspondence: not yet established with an Apple-received binary.
Line numbers refer to the captured original file. Gaps are explicitly marked. No source code was changed.

Original lines 1 to 40

0001  # 无服务器扩展:Apple 能力与发布前验收
0002  
0003  更新:2026-09-08。工程配置已添加,未操作生产 CloudKit 数据,未上传送审。
0004  
0005  ## 正式版与开发测试版身份
0006  
0007  | Target / 能力 | Release / 正式 | Debug / 测试 |
0008  |---|---|---|
0009  | HuaDianLedger / HuaDianLedgerMac | com.huadian | com.huadians |
0010  | HuaDianWidgets / HuaDianWidgetsMac | com.huadian.widgets | com.huadians.widgets |
0011  | HuaDianShare | com.huadian.share | com.huadians.share |
0012  | App Group | group.com.huadian.shared | group.com.huadians.shared |
0013  | CloudKit 容器 | iCloud.com.huadians | iCloud.com.huadians |
0014  | CloudKit 环境 | Production | Development |
0015  | URL scheme | huadian | huadians |
0016  
0017  本机工程暂保留开发团队 `[REDACTED: development team]`;旧资料曾提示该团队不拥有正式 App ID,不能把这个值当作已确认的发布团队。送审电脑必须选择真正拥有 `com.huadian` 的团队,并同步主 App / 扩展能力与描述文件。扩展版本与各自主应用一致,不新建替代主 App ID,也不要把隔离测试 ID 用于发布。
0018  
0019  用户于 2026-09-08 最终确定以上双身份配置,覆盖同日早先“所有配置都用正式 ID / 保留同一个 App Group”的临时方案。历史 `com.huadians` 真机日志仍只代表测试身份的当时结果。Run 选择 Debug,Archive 选择 Release;运行时读取 Info.plist 中与 entitlement 同源的 App Group 和 URL 配置,不使用另一身份的兜底容器。
0020  
0021  ## 在开发者账号 / Xcode 中核对
0022  
0023  1. 两个平台按 Debug / Release 使用上表对应主 ID,共用 CloudKit 容器 `iCloud.com.huadians`。Key-Value Store 仍使用 `$(TeamIdentifierPrefix)$(PRODUCT_BUNDLE_IDENTIFIER)`,因此正式与测试手动备份分属不同命名空间;它不是 CloudKit 容器,也不跟随 CloudKit 的 Development / Production 切换。
0024  2. 正式主 App 和对应扩展关联 `group.com.huadian.shared`;测试主 App 和对应扩展关联 `group.com.huadians.shared`。五份 entitlement 使用 `$(HUADIAN_APP_GROUP)`,五个 Target 的 Debug / Release 分别设置实际组名。发布团队必须有权使用所选组和共用云容器;仅在代码中写入标识不代表后台已注册或授权。
0025  3. 注册新扩展 ID,刷新开发与发行描述文件。确认签名后的主程序和扩展实际包含相应 entitlement,而不只是工程文件里存在。
0026  4. macOS 主 App 保留沙盒,并允许网络客户端访问。分享图片及文件使用用户选择权限。
0027  5. 工程已加入 `CKSharingSupported`、CloudKit 邀请回调和主 App URL scheme;无需自建服务器、API 密钥或第三方登录。
0028  
0029  官方参考:[App Groups 配置](https://developer.apple.com/documentation/xcode/configuring-app-groups)、[CloudKit 共享](https://developer.apple.com/documentation/cloudkit/sharing-cloudkit-data-with-other-icloud-users)。
0030  
0031  ## CloudKit 开发环境
0032  
0033  先在 Development 环境用开发签名验证,不直接修改 Production 用户数据。正式和测试可共用一个 CloudKit 容器,但实际隔离由最终签名中的环境决定。TestFlight / App Store 不能使用 Development;不要将这里的 Debug 测试身份直接当作 TestFlight 配置。若两套身份都接入同一容器的 Production 且登录同一 iCloud 账号,它们可以访问同一套云端账本,不能再声称相互隔离。
0034  
0035  旧正式构建若曾使用测试 App Group,组内摘要 / 待识别图片不会自动进入新正式组;主 App 本地账本未改动。先完成旧版待识别图片并导出完整备份;新正式版打开后会重新生成自己的小组件摘要,不跨组自动复制用户资料。
0036  
0037  2026-09-08 连接修复补充:两个主 Target 已通过 `HUADIAN_CLOUD_ENVIRONMENT` 明确区分 Debug / Development 与 Release / Production,并写入实际签名 entitlement。同步开关和合并基线按环境隔离,旧未标明环境的同步需用户重新确认。iPhone 开发签名版已通过账号、用户标识和私有数据库只读检查;不等同于共享邀请或生产环境通过。详情见 `family-sharing-repair-2026-09-08.md`。
0038  
0039  - 自定义 zone:`HuaDianLedgerV2`。
0040  - 个人根记录名:`personal-root`。