4

我有一个命令行脚本,用于编译、存档并将我的 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” .app/Frameworks/Charts.framework/Charts' 不受支持。此值应该是一个以您的 TEAMID 开头的字符串,后跟一个点“.”,然后是包标识符。

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

额外信息

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

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

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

为什么 xctool/xcodebuild 无法正确编译和签名以通过 ITC,而本机 Archiver 可以?

4

3 回答 3

3

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

对该问题的调查在这里:https ://forums.developer.apple.com/thread/14378

但其他人报告了以下问题associated domains

所以问题:Apple Store 提交失败并出现错误 ITMS-90046,但相关域不在权利范围内

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

于 2016-01-03T17:36:50.940 回答
0

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

于 2016-09-15T13:03:37.973 回答
0

只是一个猜测:如果您使用命令行,也许您需要application-identifier在 Entitlements.plist 中指定一个。此处https://developer.apple.com/library/ios/qa/qa1710/_index.html在“在 Xcode 的现代版本中。”

你说:

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

您是否同时创建了一个新的个人资料,现在有两个?还是两个证书?以下是 有关如何检查您的权利的说明。也许这有帮助。

于 2015-12-29T19:40:21.050 回答