diff --git a/Scripts/increment_build_number.sh b/Scripts/increment_build_number.sh
index cbf13d8..f8ac44e 100755
--- a/Scripts/increment_build_number.sh
+++ b/Scripts/increment_build_number.sh
@@ -1,18 +1,20 @@
#!/bin/sh
-PROJECT_DIR=$(pwd)/Xcodes/Resources
-INFOPLIST_FILE="Info.plist"
-buildString=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
-buildDate=$(echo $buildString | cut -c 1-8)
-buildNumber=$(echo $buildString | cut -c 9-11)
-today=$(date +'%Y%m%d')
+#
+# Increment build number
+#
+# This will get the latest build number from git tags, add 1, then set it in the Info.plist.
+# Assumes that build numbers are monotonically increasing positive integers, across version numbers.
+# Tags must be named v$version_numberb$build_number, e.g. v1.2.3b456
-if [[ $buildDate = $today ]]
-then
-buildNumber=$(($buildNumber + 1))
-else
-buildNumber=1
-fi
+infoplist_file="$(pwd)/Xcodes/Resources/Info.plist"
-buildString=$(printf '%s%03u' $today $buildNumber)
+# Get latest tag hash matching pattern
+hash=$(git rev-list --tags="v" --max-count=1)
+# Get latest tag at hash that matches the same pattern as a prefix in order to support commits with multiple tags
+last_tag=$(git describe --tags --match "v*" "$hash")
+# Get build number from last component of tag name
+last_build_number=$(echo "$last_tag" | grep -o "b.*" | cut -c 2-)
-/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildString" "${PROJECT_DIR}/${INFOPLIST_FILE}"
+build_number=$(($last_build_number + 1))
+
+/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_number" "${infoplist_file}"
diff --git a/Xcodes/Resources/Info.plist b/Xcodes/Resources/Info.plist
index 2f5badf..0a907aa 100644
--- a/Xcodes/Resources/Info.plist
+++ b/Xcodes/Resources/Info.plist
@@ -19,7 +19,7 @@
CFBundleShortVersionString
1.0.0
CFBundleVersion
- 20210103001
+ 1
CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT
$(CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT)
LSMinimumSystemVersion