11

After upgrading to Xcode 7 I have noticed that the CFBundleIdentifier has started to point to Product Bundle Identifier found in Build Settings/Packaging instead of the Bundle Identifier in the Info.Plist. Is there any way to change it back? Or will it simply work to point back to Bundle Identifier, i.e. write $(BUNDLE_IDENTIFIER) in the Product Bundle Identifier field?

turingtested
  • 6,356
  • 7
  • 32
  • 47

1 Answers1

34

You should keep the $(PRODUCT_BUNDLE_IDENTIFIER) in your Info.plist and set your product bundle identifier in Build Settings > Product Bundle Identifier with a value of something like com.mydomain.myappname.

From the Xcode 7.0 release notes:

The new build setting Product Bundle Identifier (PRODUCT_BUNDLE_IDENTIFIER) is the recommended place to set the Bundle Identifier for a target. The target’s Info.plist should be configured to use this build setting by referencing it as $(PRODUCT_BUNDLE_IDENTIFIER) in the value for the CFBundleIdentifier key.

Xcode offers to configure this for you when you accept the “Upgrade to recommended settings” project modernization in the issue navigator, unless your target preprocesses its Info.plist file. In that case you will need to configure this setting manually. This change is backwards-compatible to older versions of Xcode.

This change is required to make certain features work, such as On Demand Resources, if your target preprocesses its Info.plist file. (20887827)

Community
  • 1
  • 1
Daniel Zhang
  • 5,778
  • 2
  • 23
  • 28
  • 3
    This is the recommended way now. Also: prepare to run into build issues if you do decide to keep using a dynamic value in CFBundleIdentifier's value in Info.plist. – Webdevotion Oct 22 '15 at 10:53
  • This went un-noticed here, causing a lot of provisioning issues because my CFBundleIdentifier had a debug Suffix appended dynamically. – Rafael Nobre Aug 14 '16 at 18:02