Auto-Increment Build Number for Multiple Targets in Xcode
An update for the latest Xcode, first change "Versioning System" to "Apple Generic" in "Build Settings" tab for all of your targets.
And add this line in "Run Script" of "Build Phases" tab for all of your targets:
agvtool next-version -all
agvtool will do the increment job for you!
I figured it out. You need to use the SRCROOT
variable. This will give you the base directory for the project. From there, you need to manually specify the location of the info.plist files you wish to use, and run the PlistBuddy -c
command with that path.
Here is an example that increments the "Free" version first and then increments the "Paid" version:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$SRCROOT/Pro-Info.plist")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$SRCROOT/Pro-Info.plist"
You need to make sure you inverse the script for each target, so it uses the $INFOPLIST_FILE
variable on the current target and you are specifying the location of the others. You could probably store these in custom variables or specify each one instead of using the $INFOPLIST_FILE
variable at all, but they all do essentially the same thing.