Validation Error: Invalid Bundle. The bundle at ... contains disallowed file 'Frameworks'

IosXcodeApp Store-Connect

Ios Problem Overview


I'm trying to submit an app with the Xcode 6 GM, and I get this error on validation. The app has an action extension and a dynamic framework that's shared between the extension and the app itself.

I don't have a file called 'Frameworks' anywhere in the project, so I'm really not sure what this is supposed to mean. Has anyone gotten this issue or have any ideas?

here's what the error looks like

> Archive validation failed due to the issues listed below.
> iTunes Store operation failed.
> Invalid Bundle. The bundle at ... contains disallowed file 'Frameworks'.

Ios Solutions


Solution 1 - Ios

Turns out the error is related to using Swift (both the app and the extension make use of Swift).

For the app, I had to set:

Embedded Content Contains Swift Code: YES

and for the extension:

Embedded Content Contains Swift Code: NO

Xcode 8 and 9

Looks like this has been renamed to Always Embed Swift Standard Libraries in Xcode 8 and 9. So, for the app:

Always Embed Swift Standard Libraries: YES

and for the extension:

Always Embed Swift Standard Libraries: NO

Solution 2 - Ios

The only solution that worked for me was to add this Run Script to the App Extension target:

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

enter image description here Source: https://github.com/CocoaPods/CocoaPods/issues/4203

Solution 3 - Ios

So 3 steps to fix this from build settings

  1. Container App: Embedded Content Contains Swift Code: YES
  2. Extension: Embedded Content Contains Swift Code: NO
  3. Extension: Runpath Search Path = @executable_path/../../Frameworks

Solution 4 - Ios

In my case, I just upgraded to CocoaPods 1.0.1 and this appears to be a new bug.

The Pod update adds a run script to my Extension's target which creates the Frameworks folder. I found it as I was about to add @Roman's run script to remove it.

Solution was to delete this script from my extension's build phase. Here is the one which needed to go...

enter image description here

Solution 5 - Ios

Remove Every Build Phase for your extension that has embed word in its title.

Additionally:

  • Embedded content contains Swift code must be set to Yes for the extension target.

Solution 6 - Ios

None of the above answers worked for me. This was because the error was caused not by the parent app or it's extension. Rather one of the linked libraries was at fault.

To confirm, first archive using Xcode then using Organiser select the entry and locate using Show in Finder. This will show the .xcarchive file.

Select that file and choose "Show Package Contents".

Select the .app in the Products/Applications folder and again choose "Show Package Contents".

Locate the offending module in the Frameworks folder. For example if the error is:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

Then in the Frameworks/MyLib.framework the following will probably be visible:

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

These are present because the linked library - or module - that the parent app includes has the EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

Locate the dependent module in Xcode and update the flag:

enter image description here

Note that having overcome this issue the app may still be rejected with an explanatory email from the iTunes Store:

Invalid Swift Support - The Watch OS application has Swift libraries at both...

Again this comes back to the EMBEDDED_CONTENT_CONTAINS_SWIFT flag. Ensure that only the parent app has this set to YES. Both the WatchKit app and extension must have this flag set to NO. This is as detailed in @Mike's answer above.

Solution 7 - Ios

In my case, there was one CocoaPod library "Blockly" that was specifying Yes for "Always Embed Swift Standard Libraries". After making NO for the option, it worked.enter image description here

Solution 8 - Ios

In my case the solution was to remove my framework from my extension's Embedded Binaries and add it to my extension's Linked Frameworks and Libraries. (Both can be found in the extension's General tab.)

Solution 9 - Ios

If Embed Pods Frameworks script and Roman's script both exist in the same target.

Please check if the Embed Pods Frameworks locates before the other one. If not, just move Roman's script to the last.

Solution 10 - Ios

I was unable to find any settings for Embedded Content Contains Swift Code but I was able to find a setting Always Embed Swift Standard Libraries and setting this to NO for my framework did fix this issue.

Solution 11 - Ios

the above answers did not work for me. I have done below things.

  1. copied target settings of extension from other developer from the team
  2. Container App: Embedded Content Contains Swift Code: YES
  3. Extension: Embedded Content Contains Swift Code: NO

Please check every setting of extension from the Target.

Solution 12 - Ios

If you're using CocoaPods, I would consider deleting the Embed frameworks build phase on the problematic target (the extension), this fixed the problem for me.

Solution 13 - Ios

  1. Container App: Build Setting -> Embedded Content Contains Swift Code: YES
  2. Extension: Build Setting -> Embedded Content Contains Swift Code: NO
  3. Extension: Build Phase -> added the following Run Script in

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

  1. (important)Extension: Build Phase -> move the Run Script to the Last (after Embed Pods Frameworks script )

Solution 14 - Ios

I was getting the same error, and it is because I was copying the framework into the extension bundle. As it turns out, frameworks that are used by the extension should be copied into the Main App bundle and only linked in the extension build settings (not copied). Be sure to have the search path '@executable_path/../../Frameworks' in the extension build. I think that path was added automatically by XCode 10.

Solution 15 - Ios

None of the Build Settings listed here resolved this issue for me. However, I did get this to work after moving some frameworks from "Embedded Binaries" to "Linked Frameworks and Libraries".

It appears that my main app and one of my custom frameworks had the same framework dependency in both and that seems to be a No No but moving it in my main app from the Embedded area to the Linked area allowed me to upload the app successfully with no errors.

Solution 16 - Ios

I found lots of questions like this and none helped me fix my problem, so hopefully this might help someone.

I'm creating an app that has an Intent extension (for Siri shortcuts) and I'm using a framework for code shared between the extension and my app, as recommended by Apple.

I had added my framework to my extension in the "Frameworks and Libraries" section of the "General" settings for the target. When you add a framework here, there are two columns. One says the name of the framework and the other is titled "Embed". I had nothing showing up in the "Embed" column so I thought that was fine, but I had to explicitly choose a "Do Not Embed" option for that column for my framework. When I did that and archived in Xcode, I could see during validation that the framework wasn't listed in my ipa content under each target anymore, but just once, and validation succeeded finally.

Solution 17 - Ios

In my case, Firebase SPM was the culprit. I have a ShareExtension that was failing AppStore validation because of the frameworks folder. I fixed that with a post-archive script in the schema:

Scheme script

Solution 18 - Ios

I had this problem the first time with XCode 7.1.1 for my app that has a Today Extension (there is no Swift in my project). The script (https://github.com/CocoaPods/CocoaPods/issues/4203) didn't work for me.

Downgrading cocoapods to version 0.39.0.beta.3, running pod install, and then re-archiving solved the problem.

Solution 19 - Ios

I was getting this same error, along with a

> Disallowed nested bundles error

My problem was with the SquareReaderSDK.framework specifically but I had to add a new run script per their instructions:

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

Solution 20 - Ios

You should remove embedded frameworks from all pods and extension like in describe in: https://stackoverflow.com/a/40396491/2559850

Solution 21 - Ios

You have to add script to the end of Build Phases

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

enter image description here

Solution 22 - Ios

For Unity3D

  1. Set "Always Embed Swift Standart Libraries" to YES for the Unity-iPhone target

  2. Delete Framework folder inside your .xcodearchive (see picture)

enter image description here

enter image description here from unity forum https://forum.unity.com/threads/2019-3-validation-on-upload-to-store-gives-unityframework-framework-contains-disallowed-file.751112/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMikeView Question on Stackoverflow
Solution 1 - IosMikeView Answer on Stackoverflow
Solution 2 - IosRomanView Answer on Stackoverflow
Solution 3 - IosVincent SongView Answer on Stackoverflow
Solution 4 - IosDan LoughneyView Answer on Stackoverflow
Solution 5 - IosBartłomiej SemańczykView Answer on Stackoverflow
Solution 6 - IosMax MacLeodView Answer on Stackoverflow
Solution 7 - IossuztomoView Answer on Stackoverflow
Solution 8 - IosPimView Answer on Stackoverflow
Solution 9 - IosReeonce ZengView Answer on Stackoverflow
Solution 10 - IosGujaminView Answer on Stackoverflow
Solution 11 - IosNarasimha NallamsettyView Answer on Stackoverflow
Solution 12 - IosKurt JView Answer on Stackoverflow
Solution 13 - IosYongxiang RuanView Answer on Stackoverflow
Solution 14 - IosZatmanView Answer on Stackoverflow
Solution 15 - IosTravis M.View Answer on Stackoverflow
Solution 16 - IosBelle B. CooperView Answer on Stackoverflow
Solution 17 - IosJuan SagastiView Answer on Stackoverflow
Solution 18 - IosandreaciprianiView Answer on Stackoverflow
Solution 19 - IosFrankView Answer on Stackoverflow
Solution 20 - IosMoran77View Answer on Stackoverflow
Solution 21 - IosВладимир ЕфановView Answer on Stackoverflow
Solution 22 - IosВладимир ЕфановView Answer on Stackoverflow