1.什么是xcconfig
xcconfig是用來管理Configuration的文件敌土。在xcconfig可以指定對應(yīng)的key值感猛,在編譯的時(shí)候能夠去修改target build Setting中對應(yīng)的value值
2.xcconfig有什么用
一個(gè)app中已經(jīng)存在了debug和release環(huán)境识藤,但是在實(shí)際開發(fā)中可能需要更多的環(huán)境配置。就比如yoyi來說,debug是用在開發(fā)階段,release是用在測試階段元旬,而新多出來的distribute是用在發(fā)布正式包的階段。對于每個(gè)階段來說都要調(diào)用不同的崩潰檢測系統(tǒng)守问,數(shù)據(jù)統(tǒng)計(jì)接口匀归,以及后臺(tái)服務(wù)器接口。
為了實(shí)現(xiàn)上述情況耗帕,能實(shí)現(xiàn)的有兩張方案:
1.第一種方案通過使用target來解決穆端,公用的部分設(shè)置在project,每個(gè)環(huán)境根據(jù)各自特點(diǎn)自定義某些值仿便。這樣做帶來的后果就是targe的數(shù)量會(huì)明顯增多体啰,而targe增多帶來的后果是當(dāng)需要增加新的extension的時(shí)候,工作良會(huì)增大嗽仪,并且多環(huán)境的管理難度家具
2.第二種方式就是采用xcconfig來管理
3.如何使用xcconfig
1.去到XCode -> New File -> Configuration Setting File -> Next
2.輸入你的文件名稱荒勇,并且勾選對應(yīng)的target
3.為你對應(yīng)的configurations配置對應(yīng)的xcconfig文件。由于使用的Cocopods钦幔,會(huì)出現(xiàn)Cocopods創(chuàng)建的xcconfig枕屉,這里的target中需要選擇Cocopods中創(chuàng)建的xcconfig文件,否則運(yùn)行時(shí)會(huì)報(bào)錯(cuò)鲤氢;也可以在自己的xcconfig文件中加入一下代碼
#include "Pods/Target Support Files/Pods-YourName/Pods-YourName.debug.xcconfig"
4.添加一個(gè)新的configurations搀擂,點(diǎn)擊右下腳加號(hào),可以新增一個(gè)新的configurations
5.我們來根據(jù)不同的環(huán)境修改app的名稱
首先pod install卷玉,將新創(chuàng)建的xccconig文件重新安裝避免出錯(cuò)哨颂。
如此,直接修改APP_DISPLAY_NAME的值便可修改app的名字相种。而在Edit Scheme中切換不同的環(huán)境威恼,也可以切換對應(yīng)的app名字
5.為不同的環(huán)境添加宏標(biāo)示
我們可以創(chuàng)建一個(gè)公共的common.xcconfig文件。在該文件中如此寫入代碼寝并,并在其他xcconfig中引用該文件
之后便可通過代碼箫措,來區(qū)分環(huán)境。
4.使用xcconfig中的一些坑
我在開發(fā)的時(shí)候遇到了一個(gè)問題衬潦,當(dāng)我想通過xcconfig來配置PRODUCT_BUNDLE_IDENTIFIER的時(shí)候斤蔓,xcconfig中的信息總是沒有辦法成功的顯示。后來我發(fā)現(xiàn)镀岛,xcconifg的配置和工程默認(rèn)配置弦牡、手動(dòng)在build setting配置具備特殊的優(yōu)先級(jí)
a、project默認(rèn)配置是最低優(yōu)先級(jí)漂羊,因?yàn)槭亲罨A(chǔ)的配置驾锰;
b、target配置基于project走越,但target默認(rèn)會(huì)添加一些配置椭豫,優(yōu)先級(jí)比上面高;
c旨指、xcconfig的配置是target某個(gè)config的配置捻悯,優(yōu)先級(jí)比上面高;
d淤毛、target的build setting中直接添加的配置項(xiàng)今缚,優(yōu)先級(jí)比上面高;
所以當(dāng)build setting中已經(jīng)存在了你所配置的值時(shí)低淡,你是無法跨越這個(gè)優(yōu)先級(jí)的姓言,所以也必然導(dǎo)致你無法去執(zhí)行你的xcconfig文件內(nèi)容。修改方式也很簡單蔗蹋,去到target中的build setting中何荚,將key值對應(yīng)的value刪除(command+刪除鍵,即可刪除)猪杭。這樣就能執(zhí)行你的xcconfig了