多環(huán)境配置
Project:包含了項(xiàng)目所有的代碼,資源文件峭竣,所有信息
Target:對指定代碼和資源文件的具體構(gòu)建方式
Scheme:對指定Target的環(huán)境
方式一
在TARGETS
選中APP右擊Duplicate
復(fù)制一份APP皆撩,并重命名如LoginAPP-Dev
開發(fā)版APP扛吞。修改LoginAPP-Dev
下的Bundle Identifier滥比,后面加個-Dev
進(jìn)行區(qū)分盲泛,產(chǎn)生新的plist
文件名修改同理寺滚。
這里可以看出我只是復(fù)制了一種構(gòu)建模式,并沒有產(chǎn)生新的代碼玛迄。
增加區(qū)分也可以通過圖標(biāo)進(jìn)行區(qū)分
預(yù)先定義宏
在
Debug
模式下自定義宏DEV=1
,Release
模式下自定義宏DEV=0
并可以生效棚亩。swift環(huán)境下蓖议,找到Other Swift Flags
配置-DEV
變量
在swift代碼里進(jìn)行判斷
在操作的過程中,發(fā)現(xiàn)要在LoginApp
與LoginApp-Dev
來回配置讥蟆,甚至還要修改info.plist
勒虾,讓其生效瘸彤,配置過程繁瑣難免忽略出現(xiàn)差錯修然。
缺點(diǎn)
- 生成多個
info.plist
文件 - 配置繁瑣易混亂
方式二
這里需要選中PROJECT
-Info
-Configurations
創(chuàng)建自己想要的編譯環(huán)境如Beta
其實(shí)是與
Edit Scheme
是相通的,打開Scheme
發(fā)現(xiàn)多了Beta
一般開發(fā)中,存在內(nèi)網(wǎng)外網(wǎng)愕宋,甚至多個玻靡,像
debug
對應(yīng)一個host url,bate
對應(yīng)一個host url中贝,通過這種方式我們來創(chuàng)建一個囤捻。首先選中Build Settings
跳到最下面,點(diǎn)擊+
選Add User-Defined Setting
邻寿。定義自己的
scheme
這個時間發(fā)現(xiàn)
HOST_URL
下也是對應(yīng)的Beta
蝎土、Debug
、Release
這三個绣否。然后根據(jù)你的需求在每個下面配置你的host url
要想在項(xiàng)目使用誊涯,還需把
HOST_URL
創(chuàng)建到info.plist
文件中,通過變量的形式配置蒜撮,并暴露出來暴构。在
AppDelegate.m
文件里讀取info.plist
文件,調(diào)試段磨。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 讀取info.plist文件
NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
NSLog(@"HOST_URL ------ > %@", infoDic[@"HOST_URL"]);
return YES;
}
如我在Beta Scheme
下編譯丹壕,是不是打印出來的就是對應(yīng)的Beta
的HOST_URL
,從而達(dá)到一個多環(huán)境的配置薇溃。
Scheme
配置相比方式一配置菌赖,不需要我們過多的在多個Target
的Build Settings
去配置,只需在一個Target
的Build Settings
里配置
方式三
平常我們通過cocoapods
引用三方庫的時候沐序,對應(yīng)的Targets
的Build Settings
如Other Links Flags
琉用、Search Paths
里面都有一些參數(shù),還是需要我們不停的在Build Settings
去配置
當(dāng)我們用cocoapods導(dǎo)入文件的時候策幼,會給我們生成兩個文件
Pods-LoginApp.debug.xcconfig
邑时、Pods-LoginApp.release.xcconfig
,文件里有很多對應(yīng)的是key-value形式的變量。使用可以查看PROJECT
的Info
文件如下圖所示特姐。首先新建一個Config
文件,在改文件下Command+N
晶丘,創(chuàng)建xcconfig
文件命名一般是“目錄+App+環(huán)境”
在
PROJECT
-Info
-Configuration
里面選擇相應(yīng)的模式在對應(yīng)的
xcconfig
文件里設(shè)置如host url
寫進(jìn)
info.plist
文件比如在
Debug
模式下運(yùn)行,HOST_URL
是不是就是我在Debug.xcconfig
設(shè)置的URL這種方式設(shè)置相比較之前的顯得更加清晰唐含,所以的配置都是在這個文件下進(jìn)行配置浅浮,不需要跑到
Build Settings
里進(jìn)行配置。xcconfig
文件還有一點(diǎn)便潔的捷枯,它可以控制Build Settings
里的選項(xiàng)滚秩,比如我們在配置動態(tài)庫或者靜態(tài)庫的時候,一般需要去Other Linker Flags
配置淮捆,但我們有xcconfig
文件郁油,可以在文件里寫本股。這個樣子寫完后,并沒有在Build Settings
里生效
進(jìn)行編譯(注意因?yàn)槲覀兪窃?code>Debug.xcconfig文件里寫的桐腌,所以我們切換到Debug
模式下)
是不是生效了~
OTHER_LDFLAGS
其實(shí)是縮寫拄显,這里可以參考xcodebuildsettings網(wǎng)址
比如我們想在xcconfig
文件里添加Header Search Paths
,去該網(wǎng)址搜索案站,MTL-
去掉
HEADER_SEARCH_PATHS = /user/info/inclue/Bepa
通過
xcconfig
文件實(shí)現(xiàn)了多個環(huán)境配置躬审,并且把Build Settings
也剝離開了,配合Scheme
根據(jù)你項(xiàng)目的需求就可以進(jìn)行多環(huán)境開發(fā)嚼吞。
總結(jié)
- 通過scheme+xcconfig進(jìn)行多環(huán)境配置
- xcconfig配置相比其他兩種方式美觀且易操作
- 多環(huán)境配置可以更好的處理相關(guān)環(huán)境出現(xiàn)的問題