前言
在我們的開發(fā)iOS的時(shí)候祠丝,通常會(huì)遇到一個(gè)項(xiàng)目打包成多個(gè)環(huán)境的問題钾军,也會(huì)遇到一套代碼打包成多個(gè)項(xiàng)目的問題窒舟,最常用的做法是寫一個(gè)配置文件嘲驾,在打包的時(shí)候修改一下配置文件淌哟,來達(dá)到打不同配置的包的目的。這里辽故,我為大家介紹一種新的方式徒仓,可以大大提高打包時(shí)的效率,當(dāng)然誊垢,因?yàn)槲覐奶O果發(fā)布swift開始就開始用swift開發(fā)程序掉弛,這一篇教程是有關(guān)swift項(xiàng)目的配置症见,oc項(xiàng)目的配置我會(huì)另外寫一篇文章來介紹。
實(shí)現(xiàn)步驟
1殃饿、創(chuàng)建一個(gè)程序谋作,命名為TargetsDemo
2、右鍵點(diǎn)targets->TargetsDemo 并點(diǎn)擊Duplicate
3乎芳、這里我們可以發(fā)現(xiàn)我們的項(xiàng)目出現(xiàn)了以下變化:
-
targets中多了一個(gè)名為TargetsDemo copy的項(xiàng)目
-
項(xiàng)目文件中多了一個(gè)TargetsDemo copy-Info.plist 的文件
-
點(diǎn)擊左上角TargetDemo會(huì)多出了一個(gè)TargetsDemo copy的target
當(dāng)然遵蚜,大多數(shù)人都不能接受自動(dòng)生成的copy為后綴的名字,而且TargetsDemo copy-Info.plist文件名也需要修改奈惑,首先我們來修改TargetsDemo copy-Info.plist, 將TargetsDemo copy-Info.plist重命名為TargetsDemoDev.plist 并拖動(dòng)到info.plist同一個(gè)目錄里.
同時(shí)把targets里的 TargetsDemo copy 也重命名為TargetsDemoDev, 由于修改了plist文件的名字和位置吭净,我們需要在TargetsDemoDev這個(gè)target的Build Setting中將相應(yīng)的配置做修改:
接下來,將左上角Manage Schemes中將Scheme的名字也改成TargetsDemoDev
今后我們選擇此處不同的scheme就能打不同的包了
4携取、實(shí)現(xiàn)不同的配置
我們有了共享同一套代碼的兩個(gè)targets攒钳,有了能一鍵切換的schemes帮孔, 接下來我們就要實(shí)現(xiàn)不同的target打包的時(shí)候代碼能夠運(yùn)行的兩套配置的能力了雷滋。
在TargetsDemoDev的build setting中找到Other Swift Flags這個(gè)項(xiàng)目,在里面添加 -DDEVELOPMENT
接下來就可以在代碼里實(shí)現(xiàn)了文兢,我們先來創(chuàng)建一個(gè)Config.swift的文件,創(chuàng)建的時(shí)候記得勾選TargetsDemoDev這個(gè)target:
這時(shí)我們在main.storyboard中的視圖中添加一個(gè)label晤斩,并在代碼中賦值為配置的symbol:
#if DEVELOPMENT
let symbol = "Development"
#else
let symbol = "Production"
#endif
切換不同的scheme運(yùn)行,我們可以看到顯示的內(nèi)容并不相同姆坚,這里的symbol可以換成不同環(huán)境的url澳泵,不同環(huán)境的標(biāo)題等需要分開配置的內(nèi)容。
5兼呵、What's more?
- 如果你想給不同的target不同的icon兔辅,不同的啟動(dòng)界面,甚至不同的storyboard击喂, 你可以創(chuàng)建另一個(gè)App icons维苔, LaunchScreen.storyboard 或者storyboard, 并在TargetsDemoDev.plist中配置即可懂昂。
- 如果想一套代碼打包成不同項(xiàng)目介时,只需要在對應(yīng)的target中配置對應(yīng)的Bundle Identifier以及 Display Name即可。
希望你能喜歡這篇教程凌彬,最后的demo可以從我的 github頁面中下載: