Search code examples
iosxcodexcode7watchkitcfbundleidentifier

Invalid CFBundleIdentier ITMS-90376


In my Xcode(7.2) Project (Watchkit and IOS app), I am getting an error when trying to submit a built(using Archive upload) of my app to Itunes connect via Xcode that looks like:

ERROR ITMS-90376 "Invalid CFBundlerIdentifier. The CFBundleIdentifier value 'com.MYCOMPANY.MY-APP' 
of watch application 'MY-APP.app/Watch/MY APP Watchkit App.app' does not properly 
extend the CFBundleIdentifier value 'com.MYCOMPANY.MY-APP' of its containing 
iOS application."

There are are a few things I want(not necessarily in this order):

  1. What is the difference between CFBundleIdentifier and the Application bundle Identifier?
  2. Where can I find the CFBundleIdentifier?
  3. What does this error mean?
  4. How can I fix this error?

Edit: I forgot to mention that it also gave me a second warning:

iTunes operation succeeded with a warning.
The resulting API analysis file is too large We were unable to validate your API usage

I tried looking for people had the same error(no luck there). Then I tried looking for people with similar errors(did not solve my problem).

If you need any more information: Just Ask Me


Solution

  • CFBundleIdentifier is the Core Foundation Key and Bundle Identifier is its Xcode name for the same key that you can find in Info.plist file of your project.

    More about Core Foundation Keys

    In watch app there is particular format to follow for you bundle identifiers for the iOS app, watch app and the extension.

    1. iOS App Target (Bundle Identifier : com.companyName.AppName)
    2. WatchKit App Target (Bundle Identifier : com.companyName.AppName.watchkitapp)
    3. WatchKit Extension Target (Bundle Identifier : com.companyName.AppName.watchkitapp.watchkitextension)

    If you see watch app target contains the companion app bundle identifier as prefix followed by watchkitapp and watch kit extension target contains watch kit app bundle identifier as prefix followed watchkitextension.

    All you need is to set proper identifiers in each of target's plist file .

    Here is a complete tutorial to submit a watch app