有時為了開發需求,專案中經常要用到多種環境配置,比如開發環境,測試環境,預發環境,以及正式環境等,對於這個問題,一開始想到的是在pch中用一個變數去控制,每次打包都去修改這個變數的值,從來來達到實現不同環境的配置,但這種方式明顯太Low,xcode可以在同一個app中設定不同的環境變數(系統預設的是DEBUG和release兩種模式),文末會附上demo的github地址
#if DEBUG
#else
#endif
複製程式碼
這種寫法想必大家都不陌生,那麼我們如果想增加別的變數,實現類似這種去控制執行環境,該如何實現呢?下面我先描述下如何新增類似DEBUG這種配置變數。
一、第一步
如下幾個圖
到project-> info中增加你想要定製的環境變數配置
- 注意,如果有cocoapods,這裡增添後要進行一次pod install,pods會自動去配置相關的環境
二、第二步
到project-build settings中搜尋preprocessor macros,修改裡面的配置如下:
這裡要加上${inherited},否則在進行Pod install或者編譯的時候會有警告,最終的樣式如下:
那麼進行到這裡,就可以再專案中 用了
三、第三步
到edit schemes -> run中,可以看到build configurations多了兩個,這裡就可以切換不同的環境
到現在為止,就可以根據不同的環境設定不同的值:
以上幾個圖已經表明一切
那麼,如果想要實現不同環境下不同的app名稱或者一個手機上可以安裝多個版本的app,那又該如何設定呢?下面主要講述這一點:
第四步
project->build settings店家加號,add user-defnied setting
比如增加了一個ProductDisplayName,下面四個可以設定對應的名稱
之後再info.plist中修改預設的名稱為$(ProductDisplayName)即可
此外,為了方便還可以新增schemes
點選這個,可以新增對應的schemes
檢查下schemes配置,通過manage shcemes入口進入:
右側只要都選中就好
下面看下target-general
這裡的app名稱已經設定為自己定義的了
之後在各自的scheme中的run-build configurations中設定對應的執行環境對於一個手機上安裝多個不同環境的app也是如此,只需要在add user-defined setting中增加一組配置去設定bundle id,並且把info.plist中的Bundle Identifier替換為自己設定的即可,替換方式和name替換方式一樣
- 如果有cocoapods,一定要注意pod install,否則會報錯