如何為你的App配置多環境變數

文藝範兒的小貓咪發表於2018-12-25

參考文章 手把手教你iOS 一個app配置多環境變數

有時為了開發需求,專案中經常要用到多種環境配置,比如開發環境,測試環境,預發環境,以及正式環境等,對於這個問題,一開始想到的是在pch中用一個變數去控制,每次打包都去修改這個變數的值,從來來達到實現不同環境的配置,但這種方式明顯太Low,xcode可以在同一個app中設定不同的環境變數(系統預設的是DEBUG和release兩種模式),文末會附上demo的github地址

#if DEBUG

#else

#endif
複製程式碼

這種寫法想必大家都不陌生,那麼我們如果想增加別的變數,實現類似這種去控制執行環境,該如何實現呢?下面我先描述下如何新增類似DEBUG這種配置變數。

一、第一步

如下幾個圖

01

到project-> info中增加你想要定製的環境變數配置

02

  • 注意,如果有cocoapods,這裡增添後要進行一次pod install,pods會自動去配置相關的環境

二、第二步

02-01

到project-build settings中搜尋preprocessor macros,修改裡面的配置如下:

02-02

這裡要加上${inherited},否則在進行Pod install或者編譯的時候會有警告,最終的樣式如下:

02-03

那麼進行到這裡,就可以再專案中 用了

三、第三步

03-01

到edit schemes -> run中,可以看到build configurations多了兩個,這裡就可以切換不同的環境

03-02

到現在為止,就可以根據不同的環境設定不同的值:

03-03

03-04

03-05

以上幾個圖已經表明一切

那麼,如果想要實現不同環境下不同的app名稱或者一個手機上可以安裝多個版本的app,那又該如何設定呢?下面主要講述這一點:

第四步

05-01

project->build settings店家加號,add user-defnied setting

05-02

比如增加了一個ProductDisplayName,下面四個可以設定對應的名稱

05-03

之後再info.plist中修改預設的名稱為$(ProductDisplayName)即可

此外,為了方便還可以新增schemes

05-04

點選這個,可以新增對應的schemes

05-05

檢查下schemes配置,通過manage shcemes入口進入:

05-06

右側只要都選中就好

下面看下target-general

05-07

這裡的app名稱已經設定為自己定義的了

05-08
之後在各自的scheme中的run-build configurations中設定對應的執行環境

05-09

05-10

05-11

05-12

對於一個手機上安裝多個不同環境的app也是如此,只需要在add user-defined setting中增加一組配置去設定bundle id,並且把info.plist中的Bundle Identifier替換為自己設定的即可,替換方式和name替換方式一樣

  • 如果有cocoapods,一定要注意pod install,否則會報錯

demo地址

相關文章