在沒有配置多個環(huán)境的時候末贾,在上架和測試這兩種情況下常常需要不斷的切換許多環(huán)境參數(shù)闸溃,比如正式接口和測試接口,輸出日志和不輸出日志未舟,測試app名字和正式app名字等圈暗。這些本應該是切換成不同環(huán)境時自動配置好的掂为,所以使用Xcconfig來配置多個開發(fā)環(huán)境裕膀,比如上架的環(huán)境,測試的環(huán)境勇哗,開發(fā)的環(huán)境等昼扛。其實CocoaPods就是使用xcconfig來配置的。
參考文檔:http://www.reibang.com/p/9b8bc8351223 (簡書)
1、首先系統(tǒng)自帶Debug和Release兩種環(huán)境抄谐,如果不足夠的話可以新建一個環(huán)境
Project -> Info -> Configurations 點擊下方的+號渺鹦,選擇第一個或者第二個都可以。
此處命名為XTTest
2蛹含、生成Xcconfig配置文件毅厚,因為有Debug,XTTest,Release三個環(huán)境,所以需要生成三個配置文件浦箱,但一般需要再生成另外一個配置文件存放通用的配置吸耿,如build version等配置。
工程目錄右鍵New File酷窥,選擇下圖中的Configuration Setting File文件
以下是生成的四個文件(命名最好和環(huán)境的名字相同咽安,方便查看)
3、在Project -> Info -> Configurations中配置好相應的xcconfig配置文件蓬推,如圖妆棒。
4、在Debug.xcconfig沸伏、XTTest.xcconfig糕珊、Release.xcconfig文件中#include “CommonConfig.xcconfig"這個通用配置文件。(為了使每個環(huán)境下都能使用這個通用配置文件)
5毅糟、如果工程不需要Pods,忽略該步驟 ; 如果工程已經(jīng)使用Cocoapod(即已經(jīng)存在Pods)(如果此時才開始使用pods也是可以的放接,按使用命令窗口來使用pod的步驟來,記得最后pod install就好留特,不會有影響纠脾,后面的“ 在命令窗口cd到該工程路徑,然后輸入pod install后回車 ”可以忽略),在命令窗口cd到該工程路徑蜕青,然后輸入pod install后回車; 命令窗口會有如下提示:
原因是因為pods的xcconfig配置文件并沒有引入苟蹈,把上面紅線的文字copy引入到對應的剛才新建的Debug.xcconfig、XTTest.xcconfig右核、Release.xcconfig配置文件中就好慧脱。
(注意:如果想把系統(tǒng)自帶的Debug或者Release環(huán)境改成別的名字,需要在改完名字后重新pod install贺喝,然后再把提示的黃色字體的相關內容修正到對應的xcconfig文件中)
如Debug.xcconfig配置文件示例:
三個都配置完成后可以再pod install一次菱鸥,會發(fā)現(xiàn)不再顯示上面黃色的提示,表示配置成功躏鱼。
6氮采、此時可以在剛新建的四個配置文件中添加相關環(huán)境變量了
Debug.xcconfig
XTTest.xcconfig
Release.xcconfig
CommonConfig.xcconfig
7、此時可以測試不同環(huán)境下app的名字是否能自動改變了染苛;在info.plist文件中修改Bundle name內容為${APP_DISPLAY_NAME}(APP_DISPLAY_NAME 是那個變量名)
在下圖中選擇 Edit Scheme
選擇Run中選擇XTTest環(huán)境鹊漠,運行程序
app名字顯示如下,說明App名字現(xiàn)在可根據(jù)工程的環(huán)境自動改變名字
(Bundle Identifier自動改變也是一樣的操作。比如希望可以在一部手機上分別裝3個一樣的APP躯概,分別是測試版登钥,預發(fā)版,正式版娶靡,此時就需要3個不一樣的Bundle ID牧牢,可以去apple developer網(wǎng)站再去注冊另外兩個Bundle ID。但需要注意的是姿锭,如果使用了極光推送等需要綁定Bundle ID的结执,則會有兩個APP收不到推送,因為Bundle ID不一樣嘛艾凯。所以建議是如果使用綁定Bundle ID的第三方時献幔,就不要使用多個環(huán)境多個Bundle ID的方式,即不能同時裝三個APP了趾诗。)
8蜡感、如何使工程中某些變量的值也能根據(jù)環(huán)境改變而自動改成相應的值?
Project -> Build Setting 搜索 Swift compiler - Custom Flags
Active Compilation Conditions是Xcode8新增的配置環(huán)境參數(shù)的參數(shù)恃泪,之前使用的是 Other Swift Flags ,所以現(xiàn)在Active Compilation Conditions 和 Other Swift Flags 都可以配置環(huán)境參數(shù)郑兴,但在Other Swift Flags 中配置時前面需要加上 -D .
有三種使用方式
(1)使用Active Compilation Conditions ,不使用Other Swift Flags(紅框內的字符串并沒有要求必須是什么內容贝乎,但待會會用到情连,最好和那三個xcconfig配置文件的名字一樣,統(tǒng)一)览效。
(2)使用Other Swift Flags 却舀,不使用Active Compilation Conditions(紅框內的字符串并沒有要求必須是什么內容,-D前綴必須加上,但待會會用到锤灿,最好和那三個xcconfig配置文件的名字一樣挽拔,統(tǒng)一)。
(3)同時使用Active Compilation Conditions 和 Other Swift Flags(最好使用第一種但校,第二種)
以上三種方式親測有效螃诅。
9、新建一個專門配置環(huán)境變量的類
圖中的webServerURL變量就能自動根據(jù)環(huán)境改變而返回相應的值了
使用第一種方式状囱,然后使用print("(AppConfig.webServerURL)”)測試一下
環(huán)境選擇XTTest
輸出
配置成功术裸!