Anupam Mishra
Anupam Mishra

Reputation: 3588

Error Itms-90339: This bundle is invalid . The info.plist contains an invalid key 'CFBundleResourceSpecification’ in app bundle

I am trying to upload my application on iTunes for iOS 9. I used Xcode 7 beta 6 to build my IPA , but iTunes failed to upload my IPA by following error message .enter image description here

Upvotes: 45

Views: 32652

Answers (6)

kent
kent

Reputation: 6586

The problem lies in the Xcode integration plugin for Jenkins. Specifically, there is a checkbox in build details pane called : "Pack application and build .ipa?"

This feature will call 'xcrun PackageApplication' with the optional '--embed' and '--sign' flags set.

for the most part you will have already run codesign, and also in most cases the embedding of the provisioning profile is redundant. unfortunately the author of the plugin has not taken this into consideration, and these two optional parameters are not configurable through the GUI of the jenkins plugin.

the solution:

DO NOT SELECT THIS OPTION!

This option has three parameters:

  • '.ipa filename pattern' : ex: MyApplication

  • 'Output directory' : ex: OUTPUT

  • 'manifest plist URL' ( I've not used this... )

instead, manually package your .ipa file by adding the 'execute shell' after the build using the parameters you would in the 'pack' option of the GUI:

/bin/mkdir $(PWD)/build/OUTPUT    
/usr/bin/xcrun -sdk iphoneos PackageApplication -v $(PWD)/build/MyApplication.app -o $(PWD)/build/OUTPUT/MyApplication.ipa

Upvotes: 5

quellish
quellish

Reputation: 21254

Applications built with developer tools betas cannot be submitted to iTunes Connect.

Try it with the GM or release version of the tools.

Upvotes: 0

Rishi Goel
Rishi Goel

Reputation: 605

I am the same boat as DongHui Li. I am using Jenkins too. If I remove CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist I am NOT able to build. And if I add it, I can build but NOT able to submit to Apple.

UPDATE -> I am able to build and upload to apple using Jenkins now.
What I did is:

  1. Remove CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
  2. Find the /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication script and update it.
    Find the lines including the following code in the script

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                      "--sign", $opt{sign},
                      "--resource-rules=$destApp/ResourceRules.plist");
    

    change it to:

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                      "--sign", $opt{sign});
    

Upvotes: 57

Donghui Li
Donghui Li

Reputation: 1

As I use Jenkins to build automatically, remove CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist leads to a fail build. But with xcode building, it works.

Upvotes: 0

Kaushal Panjwani
Kaushal Panjwani

Reputation: 1263

Project settings under Build Settings > Code Signing > Code Signing Resource Rules Path - Delete the value for Code Signing Resource Rules Path. That fixed issue for me

Upvotes: 94

Massimo Polimeni
Massimo Polimeni

Reputation: 4906

Check in your info.plist if you have the voice CFBundleResourceSpecification empty and if you not need it so remove it.

If you need it so you need to check the value that you use under Code Signing Resource Rules Path in build setting.

Upvotes: 2

Related Questions