ERROR ITMS-90046 using xctool / xcodebuild vs XCode Archive's success

霸气de小男生 提交于 2019-12-21 17:40:40

问题


I've got a command line script I use to compile, archive and submit my ios builds to ITC for TestFlight deployment. They work great, but I recently ran into an issue when trying to use an embedded framework within my otherwise working project. My script compiles and archives the project successfully but is getting ITC signing errors because of the embedded binary conflict.

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

After a successful compilation my script tries to upload to ITC, and fails with the below msg. I get the same message if I try to upload the generated IPA file to ITC myself using Application Loader tool.

ERROR ITMS-90046: "Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on iOS. Specifically, value 'XXXXXXXXX.com.domain.Product' for key 'application-identifier' in 'Payload/Product.app/Frameworks/Charts.framework/Charts' is not supported. This value should be a string starting with your TEAMID, followed by a dot '.', followed by the bundle identifier.

There is no application-identifier string used in my project or settings that I can find with a global search.

Extra Info

com.domain.Product would be my project's main bundleIdentifier, which has a distribution certificate and provisioning profile generated for it. Without the embedded binary that works just fine. The "Charts" embedded project has a bundleIdentifier but the team is set to "None" in the Info tab, and signing is set to Automatic. Since it is an embedded binary/framework, I'm assuming it doesn't independently sign it. When using Xcode's Archive, it is listed as a subset of the main Project with no independent identifier or entitlements.

I have also tried creating an independent appId and distribution provisioning profile for the embedded binary called "com.domain.ProductCharts" and setup the project correctly. This does not change the error.

I have further tried setting the embedded binary's project to use the same bundleIdentier and settings as the parent Project, but this does not change the error.

Why is xctool/xcodebuild unable to properly compile and sign this to get through to ITC, while the native Archiver can?


回答1:


Currently, I encountered what I think is a bug in xcodebuild command similar to this, way I fixed it for me was to setup provisioning profile in the project settings. Try updating your project and run build again.

The investigation into the issue was here: https://forums.developer.apple.com/thread/14378

But others reported problem with associated domains:

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

What is your OS, XCode ... etc?




回答2:


Just a guess: Maybe you need to specify an application-identifier in your Entitlements.plist if you use the command line. Here https://developer.apple.com/library/ios/qa/qa1710/_index.html it is stated that in "In modern versions of Xcode.."

You said:

They work great, but I recently ran into an issue...

Have you created a new profile meanwhile and now there are two? Or two certificates? Here is a description on how to check your entitlements. Maybe this helps.




回答3:


Creating .entitlements for the embedded framework will solve the issue only in Xcode 7.x. In the version 8.x the issue still exists.



来源:https://stackoverflow.com/questions/34429043/error-itms-90046-using-xctool-xcodebuild-vs-xcode-archives-success

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!