Xcode版本号自增功能实现

关键词:Xcode, Shell, 版本号自增, 脚本

概述

  • 这个方案可以实现每次编译项目,使开发版本号的尾数自动+1。
  • 每次编译后发布版本号保持不变。
  • 手动修改发布版本号后编译,开发版本号自动改为发布版本号,并添加尾数。

源码及注释

#!/bin/bash
echo 版本号自增脚本调试开始
#buildVersion=$CURRENT_PROJECT_VERSION
buildVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
if [ $buildVersion = "\$(CURRENT_PROJECT_VERSION)" ]
then 
    echo 没有取到测试版本号,重新取。
    buildVersion=$CURRENT_PROJECT_VERSION
else
    echo 取到了测试版本号
fi
echo 当前测试版本号:$buildVersion
appVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
if [ $appVersion = "\$(MARKETING_VERSION)" ]
then
    echo 没有取到发布版本号,重新取。
    appVersion=$MARKETING_VERSION
else
    echo 取到了发布版本号
fi
echo 当前发布版本号:$appVersion
buildNumber=${buildVersion##*.}
echo 提取到的版本尾号:$buildNumber
buildVersionPre=${buildVersion%.*}
echo 提取到的测试版本号前段:$buildVersionPre
if [ $appVersion != $buildVersionPre ]
then
    echo 发布版本号与测试版本号前段不同,清除获取到的版本尾号
    buildNumber=0
fi
buildVersion=$appVersion.$(($buildNumber+1))
echo 拼接完的新版本号:$buildVersion
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildVersion" "$INFOPLIST_FILE"
if [ $? = 0 ]
then
    echo 版本号修改成功
else
    echo 版本号修改失败
fi
echo 版本号自增脚本调试结束

点击下载

使用方法

创建一个 Run Script:

项目文件 -> TARGETS -> Build Phases -> + -> New Run Script Phase

将脚本内容复制粘贴到 Run Script 。

完成。