在做公司項(xiàng)目的時(shí)候,我們經(jīng)常碰到多個(gè)開發(fā)環(huán)境的問題捅膘,比如內(nèi)網(wǎng)環(huán)境柒凉,聯(lián)調(diào)環(huán)境,外網(wǎng)環(huán)境等篓跛,這時(shí)候根據(jù)不同的環(huán)境膝捞,可能會(huì)設(shè)置不同的域名,但是每次切換起來比較麻煩愧沟。這時(shí)候蔬咬,我們可以修改Xcode
的配置,來達(dá)到切換環(huán)境的目的沐寺。首先我們先來了解一下Xcode
相關(guān)的配置的具體含義:
Project:包含了項(xiàng)?所有的代碼林艘,資源?件,所有信息
Target:對(duì)指定代碼和資源文件的具體構(gòu)建方式
Scheme:對(duì)指定Target的環(huán)境配置
方法一:多Target
1混坞、創(chuàng)建新的Target
(如下圖):
創(chuàng)建新的Target
??接下來就會(huì)發(fā)現(xiàn)狐援,項(xiàng)目中多了一個(gè)
Target
,并且運(yùn)行后究孕,會(huì)發(fā)現(xiàn)啥酱,多了一個(gè)APP,一個(gè)名字是TargetDemo
厨诸,另一個(gè)是TargetDemo-Dev
2镶殷、修改
Target
和info.plist
的名字3、在
BuildSetting
里修改info.plist
的名字4微酬、這時(shí)候绘趋,我們可以在
BuildSetting
颤陶,增加一個(gè)宏定義,Debug
模式下Dev=1
陷遮,然后在Release
模式下Dev=0
(如下圖)5滓走、在代碼里我們就可以通過宏定義來判定具體的域名
#if Dev
NSLog(@"dev");
#else
NSLog(@"release");
#endif
方法二:多Scheme
1、添加Scheme
(如下圖)帽馋,這時(shí)候我們就會(huì)發(fā)現(xiàn)搅方,項(xiàng)目所有的配置中,都會(huì)多了一個(gè)Beta
的配置茬斧,
2腰懂、對(duì)應(yīng)的,我們創(chuàng)建兩個(gè)版本的
Scheme
项秉,一個(gè)Beta
绣溜,一個(gè)Debug
(如下圖)??創(chuàng)建完成后,我們會(huì)發(fā)現(xiàn)娄蔼,項(xiàng)目中多了兩個(gè)可選擇的項(xiàng)如下圖:
??然后我們指定對(duì)應(yīng)的
Scheme
設(shè)定對(duì)應(yīng)的環(huán)境怖喻。SchemeDemo
指定到Release
,Debug
指定到Debug
岁诉,Beta
指定到Beta
锚沸,3、然后在
BuildSetting
中根據(jù)不同的模式涕癣,創(chuàng)建不同的域名(如下圖)4哗蜈、然后在
info.plist
中添加域名同名的鍵值對(duì)image.png
5、我們就可以用不同的
Scheme
來獲取不同的域名了方法三:使用xcconfig
1坠韩、跟創(chuàng)建普通的類文件一樣距潘,創(chuàng)建兩個(gè)xcconfig
文件,分別為Debug
和Release
對(duì)應(yīng)的版本只搁,并且設(shè)置不同的域名
2音比、更改配置,修改成我們對(duì)應(yīng)的配置文件即可
3氢惋、同方法二洞翩,第4步,增加鍵值對(duì)
4焰望、同方法二骚亿,第5步類似,直接測(cè)試我們配置的效果
??使用
Scheme
+xcconfig
文件是我們最推薦的方式柿估,使用起來也比較簡(jiǎn)單循未,但是需要注意沖突問題,因?yàn)?code>Cocoapods也是使用xcconfig
方式秫舌,那么如果有兩個(gè)配置文件的妖,應(yīng)該以哪種為標(biāo)準(zhǔn)來設(shè)置呢?可以使用#include
包含別的配置文件足陨。但是如果兩個(gè)配置文件設(shè)置的key相同嫂粟,會(huì)怎么辦呢?這時(shí)候墨缘,我們可以設(shè)置繼承星虹,使用關(guān)鍵字${inherited}
。