使用Xcconfig配置多個環(huán)境及環(huán)境變量

在沒有配置多個環(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



輸出

配置成功术裸!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亭枷,隨后出現(xiàn)的幾起案子袭艺,更是在濱河造成了極大的恐慌,老刑警劉巖奶栖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匹表,死亡現(xiàn)場離奇詭異,居然都是意外死亡宣鄙,警方通過查閱死者的電腦和手機袍镀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冻晤,“玉大人苇羡,你說我怎么就攤上這事”腔。” “怎么了设江?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攘轩。 經(jīng)常有香客問我叉存,道長,這世上最難降的妖魔是什么度帮? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任歼捏,我火速辦了婚禮,結果婚禮上笨篷,老公的妹妹穿的比我還像新娘瞳秽。我一直安慰自己,他們只是感情好率翅,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布练俐。 她就那樣靜靜地躺著,像睡著了一般冕臭。 火紅的嫁衣襯著肌膚如雪腺晾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天辜贵,我揣著相機與錄音丘喻,去河邊找鬼。 笑死念颈,一個胖子當著我的面吹牛泉粉,可吹牛的內容都是我干的。 我是一名探鬼主播榴芳,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嗡靡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窟感?” 一聲冷哼從身側響起讨彼,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柿祈,沒想到半個月后哈误,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩至,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年蜜自,在試婚紗的時候發(fā)現(xiàn)自己被綠了菩貌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡重荠,死狀恐怖箭阶,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情戈鲁,我是刑警寧澤仇参,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站婆殿,受9級特大地震影響诈乒,放射性物質發(fā)生泄漏。R本人自食惡果不足惜婆芦,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一抓谴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寞缝,春花似錦癌压、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至被啼,卻和暖如春帜消,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浓体。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工泡挺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人命浴。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓娄猫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親生闲。 傳聞我的和親對象是個殘疾皇子媳溺,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容