iOS 多環(huán)境配置的三種方式

概念:
Project:包含項目所有代碼、資源文件氮采、所有信息殷绍。
Target:對指定代碼和資源文件的具體構(gòu)建方式。
Scheme:對指定的Target的環(huán)境配置鹊漠。

一主到、使用多targets配置環(huán)境

這個章節(jié)請看我分享的文章:最詳細 Xcode的Targets管理項目的公開版本、測試版本躯概、預(yù)發(fā)布版本
這里不多講解

弊端:
1.生成多個info.plist文件
2.配置繁瑣且亂登钥,容易配置遺忘其它targets
3.通過聲明宏的方式,容易寫錯
4.真機測試需要的描述文件等比較多

二娶靡、使用多Scheme配置環(huán)境

正常情況下牧牢,選擇Edit Scheme ... -> Run -> Info 只有兩個Build Configuration可以選擇(Debug/Release)

這個Build Configuration是對應(yīng)于 PROJECT 里的 Info -> Configuration

于是乎可以自定義添加我們所需要的Configuration環(huán)境

因為當前只有一個Scheme,當我們運行的時候,每次都來回點到Edit Scheme...切換環(huán)境塔鳍,這無疑會導致容易操作疏漏的情況伯铣。

于是乎可以創(chuàng)建另外的Scheme,來配對剛才的配置環(huán)境轮纫,那每次選擇環(huán)境的時候腔寡,只需要選擇對應(yīng)的Scheme就可以了:

此時就可以選擇對應(yīng)的Scheme去到Edit Scheme...配對它對應(yīng)的配置環(huán)境了

那如果要區(qū)分環(huán)境去定義不同的 主機hostUrl呢?我們通過Add User-Defined Setting蜡感,自定義一個參數(shù)我起名為HOST_URL蹬蚁,它自動會分配三個環(huán)境,依次填入自己的主機域名即可(下圖我做舉例用)郑兴。

通過定義了這個自定義參數(shù)犀斋,要如何讀取出來呢?通過在Info.plist去聲明

Info.plist

訪問HOST_URL就是讀取Info.plist

// Swift
let mainBundle = Bundle.main
let identifer = mainBundle.bundleIdentifier
let info = mainBundle.infoDictionary
let CFBundleName = mainBundle.object(forInfoDictionaryKey: "CFBundleName")
let HOST_URL = mainBundle.object(forInfoDictionaryKey: "HOST_URL")
print("[identifer]:\(identifer!)")
print("[info]:\(info!)")
print("[CFBundleName]:\(CFBundleName!)")
print("[HOST_URL]: \(HOST_URL!)")
// OC 
NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"%@", infoDic[@"HOST_URL"]);

Building Settings里所有的參數(shù)都會分三個不同的環(huán)境情连,這就意味著可以設(shè)置不一樣的Icons叽粹、圖標、名稱等等...

弊端:在Building Settings里可能會不斷地去找對應(yīng)的配置然后三個環(huán)境不斷地配置却舀,不方便虫几。

三、使用 Scheme + Configurations 配置(推薦)

本文僅做操作教學挽拔,對.xcconfig一點都不懂的同學可以看這里:Swift進階-工程化實踐(一)辆脸。

在上面demo的基礎(chǔ)上,找到Build Settings -> User-Defined螃诅,將之前自定義個HOST_URL刪掉
接下來新建三個.xcconfig文件啡氢,命名規(guī)則 目錄-項目名.環(huán)境.xcconfig

Config-SchemeProject.Debug
Config-SchemeProject.Office
Config-SchemeProject.Release

.xcconfig生效,配置到對應(yīng)的Configuration

生效后可以在Build Settings中看到這個配置了

附上demo
喜歡的老鐵术裸,點個??

適配好多環(huán)境工程后仍存在一些問題的

問題一:

在我們沒有配置xcconfig文件的工程倘是,通過Cocoapods導入第三方庫 $ pod install 后,我們的工程會自動配置成默認生效是使用了Pods-ProjectName.Debug.xcconfigProjectName.Debug.xcconfig這兩個環(huán)境的xcconfig袭艺,那我們自定義的xcconfig就沒法生效了搀崭。
解決問題一的方法:
在我們自定義的xcconfig中去導入Pods-ProjectName.Debug.xcconfig

xcconfig生效的地方設(shè)置成我們自定義的xcconfig文件即可。

問題二:

比如我們用Cocoapods導入第三方庫AFNetworking猾编,在自定義的Config-SchemeProject.Debug.xcconfig里有這樣一句

OTHER_LDFLAGS = -framework "AFNetworking"

Cocoapods生成的xcconfig里也會有同一個設(shè)置值并且還有其它參數(shù)呢:

最后生效的只有我們自定義的xcconfig (解決完問題一的情況)瘤睹,而CocoapodsOTHER_LDFLAGS的其它參數(shù)并沒有生效了

解決問題的的方法:
在自定義的xcconfig聲明參數(shù)錢加上 $(inherited) 即可。 $(inherited)是繼承的意思答倡。

OTHER_LDFLAGS = $(inherited) -framework "AFNetworking"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末默蚌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子苇羡,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件设江,死亡現(xiàn)場離奇詭異锦茁,居然都是意外死亡,警方通過查閱死者的電腦和手機叉存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門码俩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歼捏,你說我怎么就攤上這事稿存。” “怎么了瞳秽?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵瓣履,是天一觀的道長。 經(jīng)常有香客問我练俐,道長袖迎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任腺晾,我火速辦了婚禮燕锥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悯蝉。我一直安慰自己归形,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布鼻由。 她就那樣靜靜地躺著暇榴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗡靡。 梳的紋絲不亂的頭發(fā)上跺撼,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音讨彼,去河邊找鬼歉井。 笑死,一個胖子當著我的面吹牛哈误,可吹牛的內(nèi)容都是我干的哩至。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蜜自,長吁一口氣:“原來是場噩夢啊……” “哼菩貌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起重荠,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤箭阶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇参,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡嘹叫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诈乒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罩扇。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖怕磨,靈堂內(nèi)的尸體忽然破棺而出喂饥,到底是詐尸還是另有隱情,我是刑警寧澤肠鲫,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布员帮,位于F島的核電站,受9級特大地震影響滩届,放射性物質(zhì)發(fā)生泄漏集侯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一帜消、第九天 我趴在偏房一處隱蔽的房頂上張望棠枉。 院中可真熱鬧,春花似錦泡挺、人聲如沸辈讶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贱除。三九已至,卻和暖如春媳溺,著一層夾襖步出監(jiān)牢的瞬間月幌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工悬蔽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扯躺,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓蝎困,卻偏偏與公主長得像录语,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子禾乘,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容