Xcode 工程設定構建版本號自動遞增
在一個 iOS 工程中,通常有兩種“版本號”,即 Version
和 Build
,如圖 1 所示:
-
Version為釋出版本號,標識應用程式釋出的正式版本號,通常為兩段式或者三段式,例如:
1.2.1
、1.0
等,其 Key 為CFBundleShortVersionString
,在 Info.plist 檔案中對應 “Bundle versions string, short”; -
Build為構建版本號,標識應用程式構建(編譯)的內部版本號,可以有多種方法表示:時間表示(e.g. “20190122080211”)、字母表示(e.g “ABC”)、以及 遞增的數字 (e.g. “100”)等。它一般不對外公開,在開發團隊內部使用。其 Key 為
CFBundleVersion
,在 Info.plist 檔案中對應 “Bundle version”;
在 App Store 釋出應用時,使用的是 “Version” 版本號,在同一個 “Version” 號下, 開發者可以上傳不同 “Build” 構建版本。此外,對於 “Build” 號,我們最常使用 “遞增的數字” 來表示。
同時,蘋果為我們提供了一個 agvtool
命令列工具,用於自動增加版本號,具體使用方式如下:
首先,在 Build Settings 配置項中,設定 Current Project Version
為選定的值,例如 100
(可以為整數或浮點數,新工程一般設為 1
), agvtool
命令會根據這個值來遞增 “Build” 號。另外需要再選擇 Versioning System
的值為 Apple Generic
,如圖 2 所示。
然後,在 Build Phases 中,點選 “+” 號,選擇 “New Run Script Phase” 新增一個執行指令碼,並設定以下指令碼程式碼,如圖 3 所示:
xcrun agvtool next-version -all
以上,我們在每次編譯工程時,“Build” 號就會自動遞增加 1 了。
關於 agvtool
命令的更多使用方式,可以參考 這裡 。
最後,上述配置在多人開發或者多分支開發時,可能會導致 “Build” 號衝突,因此,我們可以只在日常給測試人員打包的機器上配置就好了。