Using info.plist for storing target-specific values for a multi-target app

I have a multi-target iPhone app which currently includes a header file with constant definitions that are conditionally included at build time depending on which target is being built.

However, I was wondering if it might be better to instead include this information in the info.plist for the build, as this generally holds target-specific meta, so logically seems more appropriate.

  • Provide xcodebuild with .mobileprovision file
  • Accessing user defined variables passed in from xcodebuild command line
  • How to use xcodebuild with -only-testing and -skip-testing flag?
  • xcodebuild - codesign -vvvv says“resource envelope is obsolete”
  • Is there a way of automatically writing custom values to the bundle's .plist during a build phase?
  • xcodebuild not copying file from .app
  • Therefore, my questions are:

    1. Is it acceptable to include custom (non-Apple defined) keys in the info.plist file?
    2. Is this a suitable place to include meta for the app which differ between targets?

    Solutions Collect From Internet About “Using info.plist for storing target-specific values for a multi-target app”

    It is acceptable and suitable.

    The Info.plist file is preprocessed (must be enabled in project settings by setting Packaging / Preprocess Info.plist File to Yes) by the C pre-processor, so you can have variables (in the form of ${VARIABLE_NAME}). These variables can be defined in the User Defined section in Xcode’s target info, making it very easy to switch their value from one target to another.