read

You can auto increase the number with this build script.

However, that stackoverflow thread has closed and the ‘solution’ will not work now.

The Solution

This is the working script that increment the integer instead of hex.

Add it to your build phase’s run script:

#!/bin/bash
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
bN=$(expr $bN + 1)
bN=$(printf "%d" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"

I will usually set CFBundleVersion (build number) to 1000 for a new project to begin with.

The corresponding CFBundleShortVersionString is any string you want to name your version eg. “1.0” or “0.0.9-alpha”

Improved to use common number across targets

I also like the idea of having a common build number across different targets, and keeping that number in a separate file. But that script wasn’t provided..

And so I adapted the above solution by adding a Info-CFBundleVersion.plist that contains the common number.

#!/bin/bash
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PROJECT_DIR/Resources/Info-CFBundleVersion.plist")
bN=$(expr $bN + 1)
bN=$(printf "%d" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$PROJECT_DIR/Resources/Info-CFBundleVersion.plist"

Image

@samwize

¯\_(ツ)_/¯

Back to Home