自動(dòng)更新版本號(hào)
都知道開發(fā)的版本號(hào)有兩個(gè), 一個(gè)內(nèi)部人員知道的, 一個(gè)給用戶看的, 平時(shí)測(cè)試根據(jù)需求去做修改, 有的是 x.x.x
單純的數(shù)字, 有的是用日期表示, 我們的就是根據(jù)日期來表示的, 舉個(gè)例子, 今天是2017年03月09日
, 第一版的版本號(hào)就是, 1.0.0309
, 這個(gè)給別人看, 因?yàn)槭切」緶y(cè)試也不是很專業(yè), 所以這個(gè)版本號(hào)讓測(cè)試人員給提 bug 就方便一些, buid號(hào)以防萬一我也單獨(dú)做了一個(gè), 例如:1.0.0309.20
, 針對(duì)于這個(gè)我就弄了一個(gè)腳本
# 這個(gè)腳本會(huì)讀取ver.xcconfig中的BUILD_NUMBER
# 對(duì)BUILD_NUMBER自增加1,然后自動(dòng)commit和push到代碼倉庫
CONFIG_FILE="/Users/zwy/Desktop/git_zwy/CloudSecretary/CloudSecretary/CloudSecretary/Supporting Files/ver.xcconfig"
VERSION=`cat $CONFIG_FILE | grep '^VERSION=' | sed 's/VERSION=1.0.0//'`
BUILD_NUMBER=`cat $CONFIG_FILE | grep '^BUILD_NUMBER=' | sed 's/BUILD_NUMBER=1.0.0//'`
# add version
NEW_VERSION=`expr $VERSION + 1`
# add build number
NEW_BUILD_NUMBER=`expr ${BUILD_NUMBER##*$VERSION.} + 1`
echo "" > $CONFIG_FILE
echo "VERSION=1.0.0$NEW_VERSION" >> $CONFIG_FILE
echo "BUILD_NUMBER=1.0.0$NEW_VERSION.$NEW_BUILD_NUMBER" >> $CONFIG_FILE
要想使用這個(gè)腳本首先需要?jiǎng)?chuàng)建一個(gè)
xcconfig
文件
// 在你需要的地方創(chuàng)建這么一個(gè)文件, 使用終端, 當(dāng)然用 xcode 也可以創(chuàng)建
$ touch ver.xcconfig
// 進(jìn)行編輯
$ vim ver.xcconfig
寫入如下:
VERSION=1.0.0309
BUILD_NUMBER=1.0.0309.20
解釋一下代碼:
// 這是配置的文件, 也就是你的 ver.xcconfig 所目錄的位置
CONFIG_FILE="/Users/zwy/Desktop/git_zwy/CloudSecretary/CloudSecretary/CloudSecretary/Supporting Files/ver.xcconfig"
// 通過 Linux 指令查詢并用空來替換前面的應(yīng)翁
/* 使用完指令獲取到的例如:
* VERSION=309 只是取出其中的數(shù)字
* VERSION=309 此時(shí)取出的數(shù)字賦值給腳本中的 VERSION
* BUILD_NUMBER 同理
* 后面的指令只認(rèn)數(shù)字, 所以我們的這個(gè)日期的四不像需要裁剪, 這個(gè)東西就靠你自己的實(shí)際情況去修改了, 如果是正好的數(shù)字就不需要這么操作了
*/
VERSION=`cat $CONFIG_FILE | grep '^VERSION=' | sed 's/VERSION=1.0.0//'`
BUILD_NUMBER=`cat $CONFIG_FILE | grep '^BUILD_NUMBER=' | sed 's/BUILD_NUMBER=1.0.0//'`
// 版本號(hào) +1
// expr 也是 Linux 的命令, 可以用expr測(cè)試一個(gè)數(shù), 判斷其是不是整數(shù), 然后再自增
NEW_VERSION=`expr $VERSION + 1`
// BUILD_NUMBER 同理, 只不過我這里明顯 BUILD_NUMBER 最后的數(shù)字之前的東西和 VERSION 一樣的, 所以需要截取出來最后的數(shù)字, 再自增
NEW_BUILD_NUMBER=`expr ${BUILD_NUMBER##*$VERSION.} + 1`
此時(shí)新的號(hào)碼就是:
NEW_VERSION = 310;
NEW_BUILD_NUMBER = 21;
// 最后這里就好理解了, 就是用 echo 命令將新的版本號(hào)的值重新賦值回去, 等到自增后的寫入 ver.xcconfig 這個(gè)文件中
echo "" > $CONFIG_FILE
echo "VERSION=1.0.0$NEW_VERSION" >> $CONFIG_FILE
echo "BUILD_NUMBER=1.0.0$NEW_VERSION.$NEW_BUILD_NUMBER" >> $CONFIG_FILE
腳本的命令就寫完了很簡(jiǎn)單的, 剩下的就是應(yīng)用了
在 Xcode 中的版本號(hào)那里寫上新的代表:
$(VERSION)
$(BUILD_NUMBER)
此時(shí)運(yùn)行起來, 使用獲取版本號(hào)的代碼, 你會(huì)發(fā)現(xiàn)根本沒有設(shè)置上, 取出來的是空 null
這還需要最一步適配, 如果你的項(xiàng)目使用了 Cocoapods 的話一定能看到這個(gè)地方
這里其實(shí)就是配置
xcconfig
的地方, 如果你沒有 Cocoapods 的話直接切換成你的ver.xcconfig
就好了, 否則的話, 就需要引入你的文件到 Cocoapods 的xcconfig
文件中:
// 注意: 一定要是你的 ver.xcconfig 的完整路徑, 至于你放的位置需要幾個(gè) (../) 我就不確定了
#include "../../../CloudSecretary/Supporting Files/ver.xcconfig"
總之呢, 這個(gè)版本號(hào)增加的腳本, 就根據(jù)具體情況具體分析了, 比如你只需要 BUILD 增加, 就把那段 NEW_VERSION 自增的代碼刪除就行了
剩下就是怎么使用這個(gè)腳本了, 我這里有兩種方法, 第一種就是使用終端, 先把這段代碼保存成一個(gè)文件, 名字為
add_version.sh
, 然后每次增加的時(shí)候把它扔進(jìn)終端就行了, 但是每次都扔會(huì)很不方便的, 所以需要做一點(diǎn)點(diǎn)的修改:
- 先打開你的終端切換到
cd ~
根目錄 - 然后
ls -a
你會(huì)看到很多你根目錄下的文件, 太多了, 我就不一一列舉了看下圖
我們只要 .zshrc - 接下來, 輸入
vim .zshrc
- 找個(gè)地方寫下一個(gè)函數(shù),
source
后面的東西是你的腳本文件的目錄
up () {
source /Users/zwy/Desktop/add_build_number.sh
}
- 這樣你每次只需要打開終端輸入
up
回車, 就可以自動(dòng)增加了, 你也可以通過which up
查看一下你的函數(shù)
第二種就是使用 Mac 上最強(qiáng)大的神器了, Alfred Workflows
這個(gè)神器, 我就不多講了, 自行百度吧親們, 先是進(jìn)來配置圖:
alfred
這個(gè)就是我的升級(jí)版本的腳本頁面, 第一個(gè)有點(diǎn)黃色的那個(gè)就是我們的入口, 可以選擇hotkey
或者keyword
兩種方式, 寫好了以后再這個(gè)控件上右鍵:
插入這個(gè)腳本控件, 然后把我們的腳本代碼放進(jìn)去就可以了, 使用keyword
就需要下圖來調(diào)用, 使用hotkey
就一鍵快捷就可以了
最后看下調(diào)用的截圖: