SOURCE RECORD · D06
D06 · 花点记账
Local development and release identity explanation
保留原行号。个人/账户信息如有删除,已用 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`。