iOS builds / ipa creation no longer works from the command line

Overview


Our command line builds (to build and create the .ipa) are no longer working.


iTunesConnect has started rejecting builds that use the

CODE_SIGN_RESOURCE_RULES_PATH
build setting.


If we build WITHOUT that setting the PackageApplication tool (which we use to create the signed .ipa) fails.


It seems that PackageApplication calls /usr/bin/codesign with resource-rules arguments even if the

CODE_SIGN_RESOURCE_RULES_PATH
build setting is excluded


I suspect the PackageApplication needs to be updated so that it does not call /usr/bin/codesign with resource-rules arguments when the

CODE_SIGN_RESOURCE_RULES_PATH
build setting is excluded.


Has anyone found a solution for this?

Details

We build our app on the command line like this:


xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'


We create the signed .ipa on the command line like this:


xcrun -log -sdk iphoneos PackageApplication "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.app" -o "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.ipa" -sign "iPhone Distribution: MyTeam (XXXXXXXXXX)" -embed /Users/mpv/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision


iTunesConnect is now rejecting our builds with the following error:

"This bundle is invalid. The Info.plist contains an invalid key 'CFBundleResourceSpecification' in bundle myApp [myApp.app]"


If we remove the

'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
bit from the build command then the app is built without the
CFBundleResourceSpecification
plist key (which I presume is what we want). The new build command looks like this:


xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO


The problem now is that the command to build the .ipa fails with the following error:

error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: MyTeam (XXXXXXXXXX) --resource-rules=/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist --entitlements /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/entitlements_plistIUdGWLYe /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!

Warning: --resource-rules has been deprecated in Mac OS X >= 10.10! /var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T/zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist: cannot read resources


It seems that PackageApplication calls /usr/bin/codesign with resource-rules arguments even if the

CODE_SIGN_RESOURCE_RULES_PATH
argument / build setting is excluded.

I think PackageApplication needs to be updated so that it does not call /usr/bin/codesign with resource-rules arguments when the

CODE_SIGN_RESOURCE_RULES_PATH
argument / build setting is excluded.

Accepted Reply

Apple got back to me.

As of Xcode 7 we should use xcodebuild instead of PackageApplication to produce the .ipa file.

xcodebuild has a new -exportArchive option to create an .ipa that works more like Xcode Organizer.


See answer here for details: http://stackoverflow.com/a/32845990/2316115

Replies

Apple got back to me.

As of Xcode 7 we should use xcodebuild instead of PackageApplication to produce the .ipa file.

xcodebuild has a new -exportArchive option to create an .ipa that works more like Xcode Organizer.


See answer here for details: http://stackoverflow.com/a/32845990/2316115

And here it is, the script silently removed as of Xcode 8.3