Using a continuous integration solution to efficiently develop iOS applications, I stumble upon the following issue when trying to upload an .ipa file using Apple’s Application Loader (Version 3.0)
ERROR ITMS-90071: “This bundle is invalid. The CodeResources file must be a symbolic link to _CodeSignature/CodeResources. Make certain that the bundle is on a locally-mounted volume [not a remote SMB volume], and be certain to use the Mac OS X Finder to compress it.”
The error might be caused by the way your CI solution creates your resulting archive or just due to running the build process from a command line instead of old-fashioned XCode with GUI.
To fix this issue you need to manually change the structure of your application file.
# extract your application archive file (ends with .ipa) unzip Foobar.ipa -d tmp/ # change to the application folder (ends with .app) cd tmp/Payload/Foobar.app # overwrite or create the mentioned symbolic link ln -fs _CodeSignature/CodeResources CodeResources # change to the tmp/ folder cd ../.. # recreate the application archive file (.ipa) zip -yr9 Foobar.ipa Payload/
You should then be able to successfully upload your iOS application with Apple’s gorgeous Application Loader.
You can also use the copy’n’pastable example below (resulting file is called Fixed.ipa).
unzip *.ipa -d tmp/ cd tmp/Payload/*.app ln -fs _CodeSignature/CodeResources CodeResources cd ../.. zip -yr9 Fixed.ipa Payload/ cd .. mv tmp/Fixed.ipa . rm -r tmp ls -lah