一般來(lái)說(shuō)拟枚,我們項(xiàng)目中恩溅,默認(rèn)建好是只有一個(gè)target的(UItests等除外),但是脚乡,一些場(chǎng)景中,多target能幫助我們更好的使用項(xiàng)目每窖。
比如以下場(chǎng)景
- 同一項(xiàng)目窒典,一般會(huì)分不同環(huán)境:開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境瀑志、正式(生產(chǎn))環(huán)境,內(nèi)網(wǎng)環(huán)境 ,外網(wǎng)環(huán)境等,這就涉及到一個(gè)請(qǐng)求接口的區(qū)別,一般我們可能會(huì)定義多個(gè),每次切換環(huán)境污秆,就用代碼注釋解決是可以完成, 但是很便捷.我們?nèi)绻捎肨arget來(lái)解決就會(huì)便利很多.
- 同一產(chǎn)品會(huì)有多種客戶(hù)端構(gòu)成昧甘,現(xiàn)在有很多這種場(chǎng)景下的項(xiàng)目充边,類(lèi)似美團(tuán)外賣(mài)商家和用戶(hù)客端,教學(xué)項(xiàng)目的學(xué)生端和教師端等,淘寶的客戶(hù)端,商家端等等情況
這種項(xiàng)目浇冰,會(huì)生成多個(gè)App,但其中很多東西可以共用际乘,如果在一個(gè)項(xiàng)目里創(chuàng)建管理漂佩,會(huì)更好更方便。
基于以上原因,我們有必要研究一下多個(gè)Target的管理和使用.
- 同一產(chǎn)品會(huì)有多種客戶(hù)端構(gòu)成昧甘,現(xiàn)在有很多這種場(chǎng)景下的項(xiàng)目充边,類(lèi)似美團(tuán)外賣(mài)商家和用戶(hù)客端,教學(xué)項(xiàng)目的學(xué)生端和教師端等,淘寶的客戶(hù)端,商家端等等情況
準(zhǔn)備工作
創(chuàng)建一個(gè)Project 命名為MYDemo,項(xiàng)目默認(rèn)為我們創(chuàng)建了一個(gè)Target,名字為c
添加2個(gè)Target
選中target,右鍵選擇Duplicate就會(huì)添加一個(gè)target
重復(fù)來(lái)一次再加1個(gè)target
你會(huì)發(fā)現(xiàn)多了2個(gè)target 和2個(gè)info.plist
你會(huì)發(fā)現(xiàn)2個(gè)target和info.plist的名字都是帶有copy的 不滿(mǎn)意要修改稱(chēng)自己想要的,進(jìn)行以下操作
- 1 改target名字和Scheme
點(diǎn)擊左上角模擬器左邊的target選擇項(xiàng),
選擇Manage Schems
改成自己想要的名字,這里我們未來(lái)便于區(qū)分理解 ,是以MYDemo-dev ,MYDemo-test來(lái)命名的
- 2 修改info.plist名字
這個(gè)簡(jiǎn)單直接在文件名上改,為了統(tǒng)一管理名字還是以MYDemo-dev ,MYDemo-test來(lái)命名的
配置不同環(huán)境
在build setting 中搜索Macros
然后在Preprocessor Macros 添加預(yù)編譯宏WD_Environment_Mode
- 0 生產(chǎn)環(huán)境 WD_Environment_Mode==0
- 1 開(kāi)發(fā)環(huán)境 WD_Environment_Mode==1
- 2 測(cè)試環(huán)境 WD_Environment_Mode==2
注意三個(gè)target都要配置
這樣我們就可以在項(xiàng)目中根據(jù)WD_Environment_Mode來(lái)判斷切換不同的環(huán)境了
下面做個(gè)測(cè)試
給項(xiàng)目添加個(gè)pch 文件 ,這個(gè)pch添加配置就不多講了.
在pch 中 添加一些預(yù)編譯指令
#ifdef WD_Environment_Mode
#if WD_Environment_Mode==0
#define MAR_KeyK @"222"
#elif WD_Environment_Mode ==1
#define MAR_KeyK @"333"
#elif WD_Environment_Mode ==2
#define MAR_KeyK @"444"
#endif
然后我們?cè)诳刂破鞯膙iewDidLoad 里面添加如下代碼
運(yùn)行不同的target看結(jié)果
NSLog(@"---kye%@",MAR_KeyK);
switch (WD_Environment_Mode) {
case 0:
NSLog(@"生產(chǎn)00");
break;
case 1:
NSLog(@"開(kāi)發(fā)01");
break;
case 2:
NSLog(@"測(cè)試02");
break;
default:
break;
}
-
0 生產(chǎn)環(huán)境
結(jié)果如下
8836EB4F-5A1E-460C-A989-B4FBE001D8A5.png 1 開(kāi)發(fā)環(huán)境
- 2 測(cè)試環(huán)境
總結(jié): 這樣不用去手動(dòng)注釋修改代碼 只需要切換target 是不是很方便給力呢?