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

我有一个命令行脚本,用于编译,存档并将我的ios版本提交给ITC进行TestFlight部署。 他们工作得很好,但是最近遇到了一个问题,试图在我的工作项目中使用embedded式框架。 我的脚本编译和归档项目成功,但由于embedded式二进制冲突正在获取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工具将生成的IPAfile upload到ITC,我会得到相同的消息。

错误ITMS-90046:无效的代码签名权利您的应用程序包的签名包含iOS不支持的代码签名权利,具体而言,值为“XXXXXXXXX.com.domain.Product”,用于“Payload / Product”中的“application-identifier” .app / Frameworks / Charts.framework / Charts'不支持。这个值应该是一个以你的TEAMID开头的string,后跟一个点“。”,后面跟着包标识符。

在我的项目中没有使用的应用程序标识符string,或者我可以通过全局searchfind的设置。

额外的信息

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

我也尝试为称为“com.domain.ProductCharts”的embedded式二进制文件创build一个独立的appId和分发供应configuration文件,并正确设置项目。 这不会改变错误。

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

为什么xctool / xcodebuild无法正确地编译和签名以便连接到ITC,而本机Archiver可以?

目前,我遇到了类似于xcodebuild命令的错误,我为我解决的方法是在项目设置中设置provisioning profile 。 尝试更新您的项目并再次运行生成。

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

但其他人报告与associated domains问题:

所以问题: 苹果商店提交失败,错误ITMS-90046,但关联的域名不属于权利

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

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

你说:

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

你有没有创build一个新的configuration文件,现在有两个? 还是两个证书? 以下是关于如何检查您的权利的说明 。 也许这有帮助。

为embedded式框架创build.entitlements将仅在Xcode 7.x中解决该问题。 在版本8.x中问题依然存在。