CFBundleIdentifier Collision for using FMOD

We have a macOS app submitted to the mac app store which is built with Unity using FMOD. We are running into the following issue when trying to upload to the Mac App Store:

Code Block
ERROR ITMS-90511: "CFBundleIdentifier Collision. The Info.plist CFBundleIdentifier value 'com.fmod.fmodstudio' of '<GAMENAME>.app/Contents/PlugIns/fmodstudio.bundle' is already in use by another application."


I read this to say that no two submissions on the Mac App Store can use the same CFBundleIdentifier, even for common plugins like FMOD.

We first ran into the issue about a year ago, and fixed it by manually modifying the fmodstudio.bundle's info.plist file to add a unique value to the end of the CFBundleIdentifier. This worked, and all was well.

We are running into the same issue again now when trying to submit an update. However, if we modify the plugin info.plist now, it is unable to load the plugin and so FMOD throws errors, resulting in no audio in the game. If we reset the info.plist value to default, the plugin loads fine and audio is all good, however we cannot submit to the app store because of the above validation issue.

Is there any way around this? Is it a mistake that no two applications are allowed to use the same plugins, or is the expected behaviour that everyone modifies the CFBundleIdentifier of any common plugins? What else do we need to do so that the plugins are not blocked / fail to load when we do modify the CFBundleIdentifier so that it passes the submission validation to the app store?
Two things:
  • You should file a bug against the App Store ingestion process here. While it makes sense for it to enforce uniqueness for apps, enforcing it for plug-ins seems a little overzealous.

  • As to what you can do right now, you should talk to the FMOD folks about that.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
OK I have followed up with FMOD and after some back and forth and testing, it appears the fmodstudio.bundle fails to load when it is not correctly signed, which happens when the info.plist file is modified without re-signing it.

I now have a working development build, created and signed by Xcode, which works and has my modified CFBundleIdentifier. Its all great for testing, however when uploading to the app store I run into a new issue:


ERROR ITMS-90334: "Invalid Code Signature Identifier. The identifier "com.fmod.fmodstudio" in your code signature for "fmodstudio" must match its Bundle Identifier "com.fmod.fmodstudio.mygamename""


I get this error for each bundle that has a modified info.plist file. What should I be doing to tell Xcode to change the code signature to match the updated Bundle Identifier?

Accepted Answer
codesign will usually set the code signing identifier to the bundle ID (for bundle products). I suspect what’s going on here is that Xcode is re-signing with the --preserve-metadata argument, causing codesign to preserve the code signing identifier.

I can see a couple of ways forward here:
  • You could remove the code signature (using --remove-signature) which will cause Xcode to do the right thing by default.

  • You could manually re-sign with the new identifier using -i, which Xcode should then preserve. In this case you don’t need to supply an signing identity because Xcode is going to replace it anyway. I typically supply - as the signing identity, which generates an ad-hoc signature.

Both are these are a one-off operation; you shouldn’t need to change your project.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Thanks Quinn, much appreciated! I actually was just reading the man page for codesign and found --remove-signature, gave it a go and just as you suggested, it helped Xcode re-codesign it correctly. I have now uploaded to App Store Connect without any errors.

CFBundleIdentifier Collision for using FMOD
 
 
Q