Create a gist now

Instantly share code, notes, and snippets.

Xcode Auto-increment Build & Version Numbers
# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
# xcode-version-bump.sh
# @desc Auto-increment the version number (only) when a project is archived for export.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Check the checkbox "Run script only when installing"
# 6. Drag the "Run Script" below "Link Binaries With Libraries"
# 7. Insure your starting version number is in SemVer format (e.g. 1.0.0)
# This splits a two-decimal version string, such as "4.1.9", allowing us to increment all three positions.
VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
PATCHVERSION=`echo $VERSIONNUM | awk -F "." '{print $3}'`
MINORVERSION=`echo $VERSIONNUM | awk -F "." '{print $2}'`
MAJORVERSION=`echo $VERSIONNUM | awk -F "." '{print $1}'`
PATCHVERSION=$(($PATCHVERSION + 1))
if [ "$PATCHVERSION" -gt 9 ]
then
PATCHVERSION=$(($PATCHVERSION % 10))
MINORVERSION=$(($MINORVERSION + 1))
fi
if [ "$MINORVERSION" -gt 9 ]
then
MINORVERSION=$(($MINORVERSION % 10))
MAJORVERSION=$(($MAJORVERSION + 1))
fi
NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." '{print '$MAJORVERSION' "." '$MINORVERSION' ".'$PATCHVERSION'" }'`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment