iOS 测试分发指南
IPA 无法安装,先查哪一步?
先看失败发生在哪里:打不开测试链接,先查链接规则;DistKit 显示版本不可分发,先查安装包报告;能点安装但 iPhone 提示失败,再查设备资格和系统日志。反复上传同一个 IPA,不会更新里面的签名或设备名单。
先区分链接问题和安装问题
测试页面提示过期、停用或次数用尽
请发布者检查这条分享链接的密码、有效期、启用状态和分发次数上限,以及对应 App 和版本的状态。换一个链接可能恢复访问,但不能修复 IPA 的签名。
版本报告提示不能分发
记录报告中的具体原因,再检查下面的描述文件项目。DistKit 可以保留被阻断的版本供排查;上传完成不等于可以安装。
点击安装后,iPhone 提示“无法安装”
用 Safari 打开原始测试链接,确认设备系统满足 App 的最低要求,再让开发者核对导出包内的描述文件。仅凭手机上的通用报错,不能判断是证书、设备还是下载环节出错。
检查当前 IPA 里的描述文件
以这一次导出的 IPA为准,而不是 Apple Developer 后台里已经更新的记录。DistKit 的安装包报告会读取这些信息:
- 分发类型
- App Store 类型的包不能通过网页 OTA 直接安装。用于 Ad Hoc 测试时,需要按相应分发方式重新导出;不要只修改文件后缀。
- 描述文件有效期
- 过期后需要开发者更新签名材料并重新导出。报告能读取描述文件有效期,不代表已经验证签名证书仍有效或未被撤销。
- Bundle ID 匹配
- 包内应用标识必须符合描述文件允许的 App ID。若报告提示不匹配,请检查所选 target、签名配置和导出方式。
- 设备名单
- Development 和 Ad Hoc 分发需要目标设备在描述文件内。报告中的设备数量不是对某一台 iPhone 的资格确认。
- 缺少描述文件
- 没有可解析的 embedded.mobileprovision 时,DistKit 无法判断这条直接安装路径的资格。让开发者核对导出产物,而不是给包随意补一个文件。
在 macOS 上,开发者也可以对自己的导出包做只读检查。下面只解压到新建的临时目录,不修改 IPA;将 MyApp.ipa 换成实际文件路径。
workdir=$(mktemp -d)
unzip -q "MyApp.ipa" -d "$workdir"
security cms -D -i "$workdir"/Payload/*.app/embedded.mobileprovision > "$workdir/profile.plist"
/usr/libexec/PlistBuddy -c 'Print :ExpirationDate' "$workdir/profile.plist"
/usr/libexec/PlistBuddy -c 'Print :Entitlements:application-identifier' "$workdir/profile.plist"
/usr/libexec/PlistBuddy -c 'Print :ProvisionedDevices' "$workdir/profile.plist"描述文件可能包含设备 UDID、团队标识和证书信息。只在本地或授权团队内检查,不要把完整输出贴到公开论坛。此命令针对常规单 App 的 IPA;解码失败时请保留错误,交给负责导出的开发者。
已登记 UDID,仍要重新导出安装包
把设备加进 Apple Developer,不会自动改变已经上传的 IPA。开发者还需要更新描述文件,在导出时使用它,再将新包上传为新版本或替换原版本。检查新包的报告后,确认分享链接指向这次更新的版本。
Apple 的Ad Hoc 描述文件说明列出了 App ID、分发证书和测试设备的选择要求。
把这些信息交给开发者,减少来回确认
- App 版本号、构建号,以及本次使用的 Release 或分享链接。
- 失败时间、iPhone 型号、iOS 版本和屏幕上的完整错误提示。
- 失败发生在打开链接、点击安装、下载过程中,还是安装结束时。
- 该设备是否曾安装成功;同一版本在其他已登记设备上是否也失败。
不要在公开工单附上链接密码、完整 UDID、证书私钥或未公开 IPA。若包和链接检查都正常,开发者应读取设备安装日志继续定位;Apple 的安装失败排查技术说明(归档)可用于理解错误类型,文中的旧版 Xcode 操作界面不应照搬。
DistKit 的 manifest 请求记录只能说明已授权交付安装清单,不能证明文件下载、安装或首次启动已经完成。