XCode多環(huán)境配置

前言

? ? ?在項目開發(fā)過程中厘肮,我們通常會有多個項目環(huán)境,比如開發(fā)舞虱、測試欢际、預(yù)發(fā)、正式環(huán)境等矾兜,而Xcode默認(rèn)是只有debug和release兩種環(huán)境的,并且切換起來不是那么方便损趋。當(dāng)需要開發(fā)打多個包的時候,一般常見做法就是直接代碼里面修改環(huán)境變量椅寺,改完之后Archive一下就打包了浑槽。當(dāng)然這種做法沒問題,只不過不是很優(yōu)雅很高效返帕。為了更優(yōu)雅的解決這個問題桐玻,我們可以利用xcode提供的 Targets、scheme以及xcconfig來解決這個問題荆萤。

目錄

1镊靴、通過Targets來實現(xiàn)多環(huán)境配置

2、通過Build Configuration來實現(xiàn)多環(huán)境配置

3链韭、通過xcconfig來實現(xiàn)多環(huán)境配置

一偏竟、通過Targets來實現(xiàn)多環(huán)境配置

1、復(fù)制Targets

新建Xcode時會自動創(chuàng)建一個默認(rèn)的Target梧油,我們?nèi)绻约盒略龅脑捝凰剩梢酝ㄟ^復(fù)制的方式快捷創(chuàng)建第二個,復(fù)制會將已有的資源以及工程屬性copy一份儡陨。

1褪子、復(fù)制target

2、修改復(fù)制后Target的名稱骗村、生成的對應(yīng)info.plist文件名稱嫌褪,修改target相關(guān)的info.plist文件配置

2.修改Target名稱

3、設(shè)置預(yù)編譯宏

3.設(shè)置預(yù)編譯宏

4胚股、根據(jù)不同的配置來加載不同的文件或者變量

4.根據(jù)宏來加載不同的文件

5笼痛、其他應(yīng)用

? ? ? 給不同的target配置不同的Bundle Identifier以及圖標(biāo)和名稱,來實現(xiàn)擁有相似功能的多app開發(fā)琅拌。共用文件時缨伊,用宏區(qū)!但有些文件就共用就不方便进宝,如Info.plist文件刻坊。不共用文件,就設(shè)置選擇屬于自己的Target

5.多target開發(fā)多個應(yīng)用

二党晋、通過Build Configuration來實現(xiàn)多環(huán)境

1谭胚、新建Build Configuration

? ? ? ?通過Project里的info找到Configuration徐块,然后選擇添加新的Configuration。系統(tǒng)默認(rèn)Debug和Release兩種灾而。這里我們需要選擇是復(fù)制一個Debug還是Release胡控。值得注意的是,Release默認(rèn)是進(jìn)行了脫符號處理旁趟,編譯出來的包體積回比Debug模式要小一點昼激,會屏蔽部分參數(shù),具體可以通過BuildSetting里面的配置來查看區(qū)別锡搜。

1癣猾、新建Build Configuration

2、新建Scheme

為新的Configuration新建一個編譯Scheme,使用Manage Scheme添加Scheme

2
3

通過Edit scheme 來編輯各個Scheme對應(yīng)的Build Configuration

4

以上多環(huán)境已經(jīng)好啦余爆,現(xiàn)在舉個??:

我們通過User-Define來添加HOST_URL來作為請求的服務(wù)器地址,在不同的scheme環(huán)境下配置不同的地址

5

通過info.plist文件來暴露這個變量

<key>HOST_URL</key>

<string>${HOST_URL}</string>

6

最后在項目里通過切換不同的scheme就可以打印各環(huán)境下的HOST_URL啦

7

項目里的bundle id還有圖標(biāo)也可以通過這種方式來配置不同環(huán)境下的


8
9

三夸盟、通過xcconfig文件來實現(xiàn)多環(huán)境

多環(huán)境配置

1蛾方、新建一個配置目錄,在目錄里new兩個xcconfig文件上陕,注意的是這兒文件名命名規(guī)矩一般是遵循:文件夾名+ APP名 + 環(huán)境名

1

2桩砰、新建文件后我們在project里面設(shè)置一下

2

這里各環(huán)境對應(yīng)的config文件已經(jīng)配置好了,現(xiàn)在我們在文件里添加變量,并通過info.plist文件暴露出該變量

<key>HOST_URL</key>

<string>${HOST_URL}</string>

3
4

通過info.plist文件訪問這個變量的值释簿,可以看到不同環(huán)境下變量的值是不一樣的

5

注意:

在xcconfig文件里的的雙斜線會被認(rèn)為是注釋亚隅,我們需要對服務(wù)器地址的雙斜線進(jìn)行處理一下

6

? ?我們一般對動態(tài)庫配置是通過build setting中的Other Linker Flags來處理的,在xcconfig文件中只需添加OTHER_LDFLAGS?就可以對Other Linker Flags添加動態(tài)庫


7


8

? ? ? ? 其實OTHER_LDFLAGS便是裝備到鏈接器里邊庶溶,本質(zhì)上Config文件是key-value方法進(jìn)行裝備的煮纵,已然OTHER_LDFLAGS能夠裝備,那buildSetting里邊悉數(shù)涉及到環(huán)境變量的參數(shù)都能裝備偏螺,還有許多參數(shù)能夠裝備行疏,詳細(xì)能夠查看xcodebuildsettings這個網(wǎng)站。

xcconfig沖突

? ? ? ?如果我們在項目中運用cocoapods套像,項目會幫我們生成一組xcconfig文件酿联,然后pod install時會發(fā)現(xiàn)cocoapods會報錯這個警告:

1

? ? ? 從警告可以看出cocoapods發(fā)現(xiàn)咱們自己裝備了config文件,所以它沒有幫咱們裝備夺巩。我們可以將cocoapods生成的config文件導(dǎo)入到咱們自界說的config文件里邊贞让,而導(dǎo)入方法便是經(jīng)過include + 文件途徑,導(dǎo)入后柳譬,咱們在進(jìn)行pod install喳张,發(fā)現(xiàn)警告消除了


2

當(dāng)兩個config文件都有同一個配置的話會發(fā)成沖突,只生成我們配置文件的變量征绎,這個時候我們可以通過$(inherited)處理

$(inherited) :是繼承的意思蹲姐,它會將導(dǎo)入的Config文件里相同變量的值拼接起來磨取,可是在buildSetting里邊只會顯現(xiàn)$(inherited)、里邊本身所寫的柴墩,還有裝備的config文件里邊的信息忙厌,實際上所有的信息都是導(dǎo)入的

3


4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市江咳,隨后出現(xiàn)的幾起案子逢净,更是在濱河造成了極大的恐慌,老刑警劉巖歼指,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爹土,死亡現(xiàn)場離奇詭異,居然都是意外死亡踩身,警方通過查閱死者的電腦和手機胀茵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挟阻,“玉大人琼娘,你說我怎么就攤上這事「礁耄” “怎么了脱拼?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坷备。 經(jīng)常有香客問我熄浓,道長,這世上最難降的妖魔是什么省撑? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任赌蔑,我火速辦了婚禮,結(jié)果婚禮上竟秫,老公的妹妹穿的比我還像新娘惯雳。我一直安慰自己,他們只是感情好鸿摇,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布石景。 她就那樣靜靜地躺著,像睡著了一般拙吉。 火紅的嫁衣襯著肌膚如雪潮孽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天筷黔,我揣著相機與錄音往史,去河邊找鬼。 笑死佛舱,一個胖子當(dāng)著我的面吹牛椎例,可吹牛的內(nèi)容都是我干的挨决。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼订歪,長吁一口氣:“原來是場噩夢啊……” “哼脖祈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刷晋,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤盖高,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眼虱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喻奥,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年捏悬,在試婚紗的時候發(fā)現(xiàn)自己被綠了撞蚕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡过牙,死狀恐怖诈豌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抒和,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布彤蔽,位于F島的核電站摧莽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏顿痪。R本人自食惡果不足惜镊辕,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚁袭。 院中可真熱鬧征懈,春花似錦、人聲如沸揩悄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽删性。三九已至亏娜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹬挺,已是汗流浹背维贺。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巴帮,地道東北人溯泣。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓虐秋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垃沦。 傳聞我的和親對象是個殘疾皇子客给,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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