Search code examples
iosswiftxcodetestflightfastlane

Cannot upload IPA with Internal Dynamic Frameworks embedded


I tried to upload my app to the App Store Connect Portal, which already worked flawlessly (Im using Fastlane for automation with Match for signing). However, I'm using internal dynamic frameworks for structuring my code, but in order to execute the App on an actual device (either by downloading it in test flight or by building in Xcode) it is necessary to drag the frameworks to Link the Binary with Libraries and in Embed Frameworks. As it is now possible to deploy it on a device the test flight upload fails. As a side node it is not really possible to use static libraries, as the frameworks embed resources.

These are the errors:

ERROR ITMS-90680: "Invalid directory. The bundle Payload/MyApp_iOS.app/Frameworks/MyAppUIKit.framework/Logger.framework is not contained in a correctly named directory. It should be under "Frameworks"." ERROR ITMS-90685: "CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value 'de.app.myapp.Logger' under the iOS application 'MyApp_iOS.app'." ERROR ITMS-90205: "Invalid Bundle. The bundle at 'MyApp_iOS.app/Frameworks/MyAppUIKit.framework' contains disallowed nested bundles." Return status of iTunes Transporter was 1: ERROR ITMS-90680: "Invalid directory. The bundle Payload/MyApp_iOS.app/Frameworks/MyAppUIKit\nERROR ITMS-90685: "CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value 'de.app.myapp\nERROR ITMS-90205: "Invalid Bundle. The bundle at 'MyApp_iOS.app/Frameworks/MyAppUIKit.framework' contains disallowed nested bundles." The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

I'm using Xcode 11.3.1 on Catalina

Thank you for your help!


Solution

  • I had the same problem: the project was built, working nice on simulator & device but produced error when uploading to Testflight.

    Turned out that there is a new option in Xcode 11 that controls whether you want to Embed or Do Not Embed a dynamic framwork that you added to your target. (Project > select your target > General tab > Frameworks and Libraries section)

    In the project I was working on there is a Core.framework that we embedded in multiple other dynamic frameworks, and it triggered the error while uploading to Testflight because the Core.framework was embedded in multiple places.

    Basically the error message tells this:

    CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value '...' under the iOS application 'MyApp.app'. The bundle contains disallowed nested bundles. This indicates a failure."

    After I selected Do Not Embed, this error went away. Try to set the same for your Logger.framework

    enter image description here