Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Validation Error: The bundle contains disallowed file 'Frameworks'

I'm having the same issue as this guy, this guy, and this guy (nota bene, I'm actually not sure if they're all guys, per se).

They all ended up finding their own solutions, but none of them apply to my issue. I'm using Xcode 6.1 in my iOS 8 app with an included extension. The app and the extension both rely on an included framework. When I try to submit the app to the Store, the validation warning I get is "ERROR ITMS-9000: Invalid bundle. The bundle at 'xxxxx.appex' contains disallowed file 'Frameworks'".

I can't even find a file called Frameworks. The shared framework is supposed to be saved at /Library/Frameworks, which is Apple's recommended save location. The project also uses Cocoapods, which strikes me as the only other possible culprit, since it has references in its configuration files to $FRAMEWORK_PATH (though the build folder doesn't include a file or folder with that name).

like image 318
Aaron Vegh Avatar asked Nov 26 '14 18:11

Aaron Vegh


4 Answers

OK for future viewers here's the fix:

When you create your own iOS framework (I'm using Xcode 6.1) when you build it the final product contains a 'Frameworks' folder in the framework bundle itself. i.e. MyFramework.framework/Frameworks. This happens even if you don't specify a copy files/embed frameworks build phase.

What you have to do is to go into you framework bundle, find the empty frameworks folder and delete it. This should not affect your app's functionality in any way. Then build your app and check that the embedded framework doesn't have a Frameworks folder as planned.

Your archive should now not contain the offending folder and the error should be gone!

like image 168
Rob Sanders Avatar answered Nov 12 '22 20:11

Rob Sanders


I changed build settings > Packaging > Define modules set to YES in my extension and watch app target. Works fine for me.

like image 4
David T. Avatar answered Nov 12 '22 21:11

David T.


In my case the solution was the following :

Try to create the script there 'problematic target' -> Build Phases' then click on + and select New Run Script Phase, the run script should go after all others. Insert there :

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
   rm -fr Frameworks
fi

Then clean the project and try to create an archive once again. These answer was provided in the following issue :

  • https://github.com/CocoaPods/CocoaPods/issues/4203

I hope this help you.

like image 4
Victor Sigler Avatar answered Nov 12 '22 21:11

Victor Sigler


Continuing to work with this, I noted that my Share Extension had an "Embed Frameworks" Build Phase, with the Destination set to the "Frameworks" directory. I changed it to "Shared Frameworks" and the error has gone away.

However, another error remains: "... contains disallowed nested bundles". I thought this was a sort of umbrella error warning as a result of the original. I'll open another question for that one.

like image 2
Aaron Vegh Avatar answered Nov 12 '22 19:11

Aaron Vegh