-
Star
(738)
You must be signed in to star a gist -
Fork
(156)
You must be signed in to fork a gist
-
-
Save sekati/3172554 to your computer and use it in GitHub Desktop.
| # 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 "0.45.123", allowing us to increment the third position. | |
| VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}") | |
| NEWSUBVERSION=`echo $VERSIONNUM | awk -F "." '{print $3}'` | |
| NEWSUBVERSION=$(($NEWSUBVERSION + 1)) | |
| NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." '{print $1 "." $2 ".'$NEWSUBVERSION'" }'` | |
| /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}" |
I needed to compare buildNumber with the current value in the plist before updating the plist. If the plist is updated on every build, then the SwiftUI previewer will continually stop:
currentNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$PRODUCT_SETTINGS_PATH")
if [ "$buildNumber" -ne "$currentNumber" ] ; then
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$PRODUCT_SETTINGS_PATH"
fiFrom Xcode 13, a new project will not generate an info.plist. Instead this is embedded in the project.
If you want a project to generate an Info.plist, set Generate Info.plist file to no and then open the Info tab and add a option (e.g. App Transport Security Settings). Xcode will then generate the Info.plist file and add all the values as well as update the build settings.
If you want to keep $(MARKETING_VERSION)
in Info.plist for CFBundleShortVersionString but
want to increase version after successful archive or build
then use following script
following script will increase like 1.0 to 2.0
but of-course that logic can be modified using above explained gist etc

Thanks @jndefosse, I use the commit count as the build number.