在每個項(xiàng)目的開發(fā)過程中都會涉及到 測試環(huán)境與發(fā)布環(huán)境得切換参袱。最原始得方式是 每次運(yùn)行與打包都手動修改環(huán)境配置代碼,但這樣效率地下撩幽,而且出錯率極高兜挨。然而另一種一勞永逸的方式就是使用多個Target,并結(jié)合自定義的預(yù)編譯條件葬燎。
創(chuàng)建Target
選中當(dāng)前的Project误甚,右鍵需要多環(huán)境管理的target,點(diǎn)擊Duplicate
缚甩,生成當(dāng)前target的拷貝。項(xiàng)目中的plist窑邦,Scheme也都相應(yīng)的生成一份拷貝擅威。
可在Manage Scheme中修改Scheme名稱等信息
可在build setting中修改target對應(yīng)的plist
每個target的配置是相互獨(dú)立的,可以分別配置Bundle id冈钦,Version, AppIcon, 證書等等郊丛。
注意:在為項(xiàng)目添加新文件時需要將對應(yīng)的target都勾選
創(chuàng)建預(yù)編譯條件在代碼中區(qū)分target
還是在build setting中配置, 此處添加了一個APPSTORE 標(biāo)簽
在不同的target執(zhí)行不同的代碼
#if APPSTORE
print("this is app store target")
#else
#endif
在不同的target配置不同的網(wǎng)絡(luò)請求host
#if APPSTORE
let host = "https://zytest.release/"
#else
let host = "https://zytest.staging/"
#endif
對于數(shù)據(jù)分析平臺,推送等需要設(shè)置不同的key的情況派继,都可以通過該預(yù)編譯條件宾袜,以同一變量名的配置不同的值。
結(jié)合CocoaPods
pod對庫的管理也是以target為基礎(chǔ)驾窟。添加target后需要在Podfile中添加對應(yīng)的target庆猫。對于target也就可以分別引入不同的庫竹习。此處對于配置管理丐一,一般引入的庫都是相同渔彰,可以在Podfile中使用def定義需要引入的庫窿春。
def podLibs
pod Alamofire
end
target 'ZYAppStoreTarget' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
podLibs
end
target 'ZYInHouseTarget' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
podLibs
end
最后在運(yùn)行或者打包時選擇對應(yīng)的target即可。