我想管理我的專案的版本資訊,這些資訊都是分散在多個檔案中的,例如 .podspec,.xcodeproj和一些.h檔案。
我想知道的是有什么方法可以一次自動更改它們?
現在,我正在搜索它們中的每一個,然后手動更改值。
我認為會有通過 CI/CD 的方法,但不容易找到解決方案。
我找到了一個名為 agvtool 的工具,但它似乎無法管理與 cocoapods 相關的檔案。
我想像 Adjust SDK 在這里所做的那樣自動進行版本控制,但不確定他們是否真的自動完成了。
如果可以在提交推送到主分支的那一刻完成會更好。
這可能嗎?如果您給我任何提示,那將非常有幫助。謝謝。
uj5u.com熱心網友回復:
可能沒有一種解決方案可以滿足所有需求,但效果很好的一種解決方案是使用 Xcode 自定義變數。
- 轉到您的專案構建設定(不僅僅是單個目標的設定),按
左上角的 并選擇“添加用戶定義的設定”。 - 將其命名為類似的名稱
APP_VERSION并為其分配您要使用的版本值。- 您還可以將其拆分為主要/次要/補丁變數,然后根據需要參考
$(APP_VERSION_MAJOR).$(APP_VERSION_MINOR).$(APP_VERSION_PATCH)它。
- 您還可以將其拆分為主要/次要/補丁變數,然后根據需要參考
- 轉到構建設定(專案范圍或您的目標)并在“Apple Clang - Preprocessing”部分中搜索“Preprocessor Macros”設定。編輯它并添加
-DAPP_VERSION="\"$(APP_VERSION)\"".- 現在您可以在 C/Objective-C 頭檔案和實作檔案中使用它:
const char * version = APP_VERSION;或NSString * const version = @APP_VERSION;. - 要在 Swift 中使用它,您需要通過 Swift 匯入標頭(構建設定中的“Objective-C Bridging Header”)公開它。
- 現在您可以在 C/Objective-C 頭檔案和實作檔案中使用它:
- 在您的
Info.plist檔案中,將“捆綁版本字串(短)”(又名CFBundleShortVersionString)設定為$(APP_VERSION).
如果您想覆寫 CI 中的版本,只需將APP_VERSION=…呼叫傳遞給xcodebuild: xcodebuild … APP_VERSION=1.2.3。
您通常有兩個版本:您在任何地方向用戶展示的版本,也就是CFBundleShortVersionString. 然后是“真實”版本,又名CFBundleVersion. 您只需執行與上述相同的操作,但使用兩個不同的變數,例如APP_VERSION_MARKETING和APP_VERSION_INTERNAL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496758.html
下一篇:Swift延遲行為
