Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ERROR ITMS-90685: "CFBundleIdentifier Collision. There is more than one bundle"

When I am try to submit my app to app store, I am getting the error:

ERROR ITMS-90685: "CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value com.companyname.projectName under the application ProjectName.app"

Can any one help me?

like image 957
Raju Abe Avatar asked Oct 12 '16 17:10

Raju Abe


4 Answers

Cause

It happens if your HostApp embeds a framework which has been also embedded in some of the frameworks which are also being embedded in HostApp. For example,

  1. Host H embeds framework F1 and framework F2
  2. Framework F1 embeds framework F2
  3. Thus, Framework F2 will be duplicated in bundle after IPA generated

Solution

Only HostApp but no other frameworks should embed any dependent frameworks in their respective Build Phase. So,

  1. Go to Build Phase tab for F1
  2. Remove F2 from Embed Frameworks step, or remove full step
  3. Go to General tab for F1
  4. Select Frameworks, Libraries and Embedded Content
  5. Select Do Not Embed option for F2

Have a clean build.

like image 181
Sazzad Hissain Khan Avatar answered Oct 15 '22 07:10

Sazzad Hissain Khan


Sometimes this doesn't have anything to do with App Extensions, in an app without any App Extension this can be originated because you're duplicating a framework inside the generated IPA.

In my case the issue was I was importing a framework A that contained other two frameworks B & C, all in the same workspace. In the app I was importing A, B, C but in the framework A the frameworks B & C were embedded with the Embed & sign and that's incorrect and it was causing the issue. It should have been added with the Do not embed.

like image 21
Victor Sigler Avatar answered Oct 15 '22 08:10

Victor Sigler


Steps without script:

  • Open the (Your App).xcodeproj file (this is the first file on the project navigator pane).
  • Switch to the target for your app extension (on the top left of the middle pane).
  • Go to the Build Phases tab
  • Click the X after "Embed Pod Frameworks"
like image 7
Wojtek Dmyszewicz Avatar answered Oct 15 '22 08:10

Wojtek Dmyszewicz


This seems to be a long standing bug that is even present with Swift Package Manager. For the build phase of the extensions, I added this "Run Script" as the last step:

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

This removes the duplicate framework it's complaining about during archiving, which will be linked from the host target anyway. We just need it to be linked in Xcode for the extension so we can compile at development time.

like image 5
TruMan1 Avatar answered Oct 15 '22 09:10

TruMan1