【发布时间】:2015-12-23 05:13:49
【问题描述】:
我有一个命令行脚本,用于编译、存档并将我的 ios 构建提交给 ITC 以进行 TestFlight 部署。它们工作得很好,但我最近在尝试在我原本可以工作的项目中使用嵌入式框架时遇到了一个问题。我的脚本成功编译并存档项目,但由于嵌入的二进制冲突而出现 ITC 签名错误。
xctool -workspace $BASE_DIR/$PROJECT_NAME -scheme $SCHEME -configuration $CONFIG clean archive -archivePath ./$PRODUCT_NAME.xcarchive
xcodebuild -exportArchive -archivePath ./$PRODUCT_NAME.xcarchive -exportPath $PRODUCT_NAME -exportFormat ipa -exportProvisioningProfile "$DIST_PROVISIONING_PROFILE_NAME"
# result is successful, with .ipa file generated
编译成功后,我的脚本尝试上传到 ITC,但失败并显示以下消息。如果我尝试使用 Application Loader 工具自己将生成的 IPA 文件上传到 ITC,我会收到相同的消息。
错误 ITMS-90046:“无效的代码签名权利。您的应用程序 捆绑包的签名包含不属于 在 iOS 上支持。具体来说,值 'XXXXXXXXX.com.domain.Product' 对于关键的“应用程序标识符” 'Payload/Product.app/Frameworks/Charts.framework/Charts' 不是 支持的。这个值应该是一个以你的 TEAMID 开头的字符串, 后跟一个点“.”,然后是包标识符。
在我的项目或设置中没有使用我可以通过全局搜索找到的应用程序标识符字符串。
额外信息
com.domain.Product 将是我项目的主要 bundleIdentifier,它具有为其生成的分发证书和配置文件。没有可以正常工作的嵌入式二进制文件。 “图表”嵌入式项目有一个 bundleIdentifier,但团队在信息选项卡中设置为“无”,并且签名设置为自动。由于它是一个嵌入式二进制/框架,我假设它不会独立签名。当使用 Xcode 的存档时,它被列为主项目的子集,没有独立的标识符或权利。
我还尝试为名为“com.domain.ProductCharts”的嵌入式二进制文件创建独立的 appId 和分发配置文件,并正确设置项目。这不会改变错误。
我进一步尝试将嵌入二进制的项目设置为使用与父项目相同的 bundleIdentier 和设置,但这不会改变错误。
为什么 xctool/xcodebuild 无法正确编译和签名以通过 ITC,而本机 Archiver 可以?
【问题讨论】:
标签: ios xcode app-store-connect xcodebuild xctool