Xcode手动导出Ad-hoc归档失败,如何排查?
问题描述
通过Xcode GUI构建并导出归档可正常完成,但执行以下xcodebuild命令导出时失败:
xcodebuild -verbose -exportArchive -archivePath build/MyApp.xcarchive -exportPath build -exportOptionsPlist ExportOptions.plist | xcpretty
报错信息:
AppThinning.StubError(errorDescription: Optional("ipatool failed"))
详细日志仅显示警告,无明确错误原因。当前使用的ExportOptions.plist配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>compileBitcode</key> <true/> <key>destination</key> <string>export</string> <key>method</key> <string>ad-hoc</string> <key>provisioningProfiles</key> <dict> <key>com.foo.myapp</key> <string>[redacted]</string> <key>com.foo.myapp.OneSignalNotificationServiceExtension</key> <string>[redacted]</string> </dict> <key>signingCertificate</key> <string>Apple Distribution</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>[redacted]</string> <key>thinning</key> <string><none></string> </dict> </plist>
补充:thinning配置符合官方文档要求,且Xcode GUI使用该配置可成功导出。
解决尝试方案
移除xcpretty查看完整原始日志
xcpretty可能过滤掉ipatool的关键错误信息,直接执行不带管道的命令:xcodebuild -verbose -exportArchive -archivePath build/MyApp.xcarchive -exportPath build -exportOptionsPlist ExportOptions.plist在输出中搜索
ipatool相关内容,通常能找到具体失败原因,比如证书权限、文件缺失、配置冲突等。修正thinning配置的转义问题
命令行环境下,XML转义后的<none>可能存在识别异常,将ExportOptions.plist中thinning的取值改为原始的<none>(无需转义),再重新测试导出。临时关闭bitcode编译
将compileBitcode改为<false/>,排除bitcode编译环节中ipatool的处理异常,确认是否由bitcode导致问题。清理构建缓存
删除build目录、Xcode的Derived Data,重新生成归档后再执行导出命令,避免缓存文件损坏引发的异常。校验扩展配置一致性
确认OneSignalNotificationServiceExtension的签名证书、描述文件配置是否和主应用完全匹配,且在命令行环境下能被正确识别。
内容的提问来源于stack exchange,提问作者Jasper Blues
相关产品推荐
相关产品推荐

