Xcode Script - Get package id from build settings instead of info.plist

I am using Receigen check for Apple. I integrated the script into my build process, which generates the appropriate files for my project:

# Receigen binary RECEIGEN="/Applications/Receigen.app/Contents/MacOS/Receigen" # Extract Info.plist information INPUT="$INFOPLIST_FILE" BUNDLE_ID=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "$INPUT"` BUNDLE_VERSION=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INPUT"` # Expand information if needed EXPANDED_BUNDLE_ID=`eval "echo $BUNDLE_ID"` EXPANDED_BUNDLE_VERSION=`eval "echo $BUNDLE_VERSION"` # Make sure the destination directory exists mkdir -p "$DERIVED_FILES_DIR" HEADER="$DERIVED_FILES_DIR/receiptCheck.h" # Check if the generation is needed if [ -e "$HEADER" ]; then SKIP=`grep -q "$EXPANDED_BUNDLE_ID" "$HEADER" && grep -q "$EXPANDED_BUNDLE_VERSION" "$HEADER" && echo "YES"` fi # Generate the header file if needed if [ "x$SKIP" = "x" ]; then "$RECEIGEN" --identifier "$EXPANDED_BUNDLE_ID" --version "$EXPANDED_BUNDLE_VERSION" --failure 'exitwith173' --success 'runapplication' --os osx > "$HEADER" fi 

The problem with Xcode 7 is related to this line:

 BUNDLE_ID=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "$INPUT"` 

Since the BundleID of the new Xcode is in the build settings instead of Info.plist, I believe that the key in the build settings is $ (PRODUCT_BUNDLE_IDENTIFIER)

Is there a way to extract the bundle id from build settings on a script?

+6
source share
3 answers

You can simply use $PRODUCT_BUNDLE_IDENTIFIER instead of hardcoding package identifier:

 EXPANDED_BUNDLE_ID=$PRODUCT_BUNDLE_IDENTIFIER 

(Note that there are no parentheses around PRODUCT_BUNDLE_IDENTIFIER ).

You can then delete the line starting with BUNDLE_ID= because it is no longer needed.

+3
source

I have the same problem. Here you can get around this. In the script, replace:

EXPANDED_BUNDLE_ID=eval "echo $BUNDLE_ID"

with

EXPANDED_BUNDLE_ID='com.foo.bar'

where com.foo.bar is the identifier of my product. This allows me to at least compile Receigen so that I can continue to work.

0
source

It is very simple:

BUNDLE_ID = xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER

echo $ BUNDLE_ID

0
source

All Articles