ERROR ITMS-90046使用xctool / xcodebuild与XCode Archive的成功

时间:2015-12-23 05:13:50

标签: ios xcode itunesconnect xcodebuild xctool

我有一个命令行脚本,用于编译,存档并将我的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'   对于密钥'应用程序标识符'在   '有效载荷/ Product.app /框架/ Charts.framework /图表'不是   支持的。该值应该是以TEAMID开头的字符串,   然后是一个点',然后是包标识符。

我的项目或设置中没有使用应用程序标识符字符串,我可以通过全局搜索找到它。

额外信息

com.domain.Product将是我项目的主要bundleIdentifier,它具有为其生成的分发证书和配置文件。没有嵌入式二进制文件可以正常工作。 "图表"嵌入式项目有一个bundleIdentifier,但团队设置为"无"在“信息”选项卡中,签名设置为“自动”。由于它是一个嵌入式二进制/框架,我假设它没有独立签名。使用Xcode的存档时,它被列为主项目的子集,没有独立的标识符或权利。

我还尝试为嵌入式二进制文件创建一个独立的appId和分发配置文件,名为" com.domain.ProductCharts"并正确设置项目。这不会改变错误。

我进一步尝试将嵌入式二进制文件设置为使用与父项目相同的bundleIdentier和设置,但这不会更改错误。

为什么xctool / xcodebuild无法正确编译并签名以通过ITC,而原生Archiver可以?

3 个答案:

答案 0 :(得分:3)

目前,我遇到了我认为xcodebuild命令中与此类似的错误,我修复它的方法是在项目设置中设置provisioning profile。尝试更新项目并再次运行构建。

对此问题的调查如下:https://forums.developer.apple.com/thread/14378

但其他人报告了associated domains的问题:

问题:Apple Store submit fails with Error ITMS-90046, but Associated Domains is not among entitlements

您的操作系统,XCode等等是什么?

答案 1 :(得分:0)

猜测:如果使用命令行,可能需要在Entitlements.plist中指定application-identifier。这里https://developer.apple.com/library/ios/qa/qa1710/_index.html表示在“在Xcode的现代版本中”

你说:

  

他们工作得很好,但我最近遇到了一个问题......

您是否同时创建了新的个人资料,现在有两个?还是两个证书?这是一个description on how to check your entitlements。也许这有帮助。

答案 2 :(得分:0)

为嵌入式框架创建.entitlements只能在Xcode 7.x中解决问题。在版本8.x中,问题仍然存在。