一般項(xiàng)目都會(huì)分為測(cè)試環(huán)境和發(fā)布環(huán)境,常用的做法就是通過代碼來直接修改;這里要說的是通過配置
Configurations來控制環(huán)境變量
在Configurations中添加配置
點(diǎn)擊?號(hào)里面有兩個(gè)選項(xiàng),根據(jù)需求自由選擇
Debug configurationRelease configuration

如果項(xiàng)目中用到了
cocoapds需要pod install一下
新建Scheme
- 點(diǎn)擊
new Scheme,新建一個(gè)Scheme


- 點(diǎn)擊
target選中剛才新建的scheme->Edit Scheme選擇運(yùn)行環(huán)境,這里可以把Run模式和Archive都改成新建Scheme,如下圖:

新建User-defined Build Settings
回到Project的Build Settings里面來,點(diǎn)擊頂部的?號(hào)按鈕選擇Add User-Defined Setting


這里新加了2個(gè)參數(shù),CustomAppBundleld是為了設(shè)置多個(gè)build identifier這樣我們就可以打多個(gè)包,這里設(shè)置了3個(gè)不同的build identifier;
CustomProductName是為了app安裝到手機(jī)上顯示不同的名字和icon。
修改info.plist文件 和 Images.xcassets
- 修改
info.plist文件
由于我們需要根據(jù)不同的配置環(huán)境來顯示不同的APP名稱,所以我們需要把info.plist里面的Bundle display name、Bundle identifier修改成我們自定義的這個(gè)字典;編譯過程中編譯器會(huì)根據(jù)我們?cè)O(shè)置好的Scheme去自己選擇對(duì)應(yīng)的ProductName和Bundle identifier

- 設(shè)置
Images.xcassets
為了根據(jù)不同的配置環(huán)境來顯示不同的app icon我們需要在Images.xcassets里面新添加2個(gè)New iOS App Icon

新建完AppIcon之后,再在Build Setting里面找到Asset Catalog Compiler里面,然后把這幾種模式下的App Icon set Name 分別設(shè)置上對(duì)應(yīng)的圖標(biāo),如下圖:

配置和獲取環(huán)境變量
- 使用
GCC預(yù)編譯頭參數(shù)GCC_PREPROCESSOR_DEFINITIONS
進(jìn)入到Build Settings搜索preprocessor macros找到Preprocessor Macros,我們可以在這里加一些環(huán)境變量的宏定義來標(biāo)識(shí),Preprocessor Macros可以根據(jù)不同的環(huán)境預(yù)先制定不同定義的宏。

之后我們可以根據(jù)我們?cè)O(shè)置的宏來進(jìn)行一些邏輯的處理,譬如最簡(jiǎn)單的發(fā)布環(huán)境的url和測(cè)試環(huán)境的url
最后附上效果圖
