Xcode配置-利用Scheme實(shí)現(xiàn)多套環(huán)境配置

背景說明

在iOS開發(fā)過程中,常常會朋友一個(gè)應(yīng)用對應(yīng)多套環(huán)境的情況,一般分為測試環(huán)境、預(yù)發(fā)環(huán)境、生產(chǎn)地址,每套地址的域名不一樣。每次打包或者安裝的時(shí)候都要手動(dòng)去修改一下地址相當(dāng)麻煩,而Xcode正好提供了一個(gè)可以輕松解決這種情況的機(jī)制—Configuration。

跟Schema相關(guān)的配置

  • Build Archive Architecture Only:只編譯當(dāng)前架構(gòu)
  • Code Signing Identity: 打包證書
  • PreProcessor Macros: 預(yù)編譯環(huán)境常量
  • Asset Catalog Compiler - Options: 圖片資源編譯選項(xiàng)
  • User-Defined:用戶定義的常量

新增Scheme配置

添加測試環(huán)境配置

新增測試環(huán)境配置

注意:添加測試環(huán)境時(shí)復(fù)制測試環(huán)境的配置,添加線上環(huán)境時(shí)復(fù)制線上環(huán)境的配置。

新建 Scheme

新建 Scheme

新建完成后,Build Configuration 選剛才新建的配置FKTestDebug

iBuild Configuration配置

下面依次來說幾個(gè)配置項(xiàng):
1.Build Active Architecture Only

Architecture

在Build Settings中:
Architectures 想支持的指令集
Valid Architectures 有效的指令集
Build Active Architecture Only 是否只編譯當(dāng)前設(shè)備適用的指令集(如果這個(gè)參數(shù)設(shè)為YES,那么如果你用iPhone 6調(diào)試,最終生成的一個(gè)只支持arm64指令集的Binary,不過指令集是向下兼容的,比如用iPhone4(armv7)編譯出來的APP,可以在iPhone5(armv7s)上運(yùn)行,因?yàn)閍rmv7s向下兼容armv7,但是不可以在iPhone3G(armv6)上運(yùn)行;如果這個(gè)參數(shù)設(shè)為NO,最終生成一個(gè)支持 Architectures 中所有指令集的Binary,所以一般在DEBUG模式下設(shè)為YES,RELEASE設(shè)為NO,這樣可以加快打包的速度)
iOS設(shè)備的指令集常見的有以下幾種:

  • ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
  • ARMv7s: iPhone 5, iPhone 5c, iPad 4
  • ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
  • ARMv6: iPhone, iPhone 3G, iPod 1G/2G

因?yàn)镃onfiguration在原來的基礎(chǔ)上添加了一條測試配置,所以Build Active Architecture Only 中也出現(xiàn)了1個(gè)條目,可供配置。

2.Code Signing

Code Signing

可根據(jù)scheme配置對應(yīng)的證書

3.Preprocessor Macros 預(yù)編譯宏
這條就重要了,環(huán)境常量可以用來配置App的環(huán)境
1、新增一條環(huán)境常量:

增加環(huán)境常量的步驟

2、測試環(huán)境變量是否可用


模擬環(huán)境配置

3、經(jīng)測試,環(huán)境變量可用!

4.Asset Catalog Compiler - Options
1.添加Icon的圖片集

新建圖片文件目錄

2.在配置中修改配置對應(yīng)的Icon圖集


調(diào)整icon目錄

5.User-Defined

增加User-Defined

新增一條AppName

新增一條AppName

2.自定義好用戶自定義宏后,打開info.plist,讀取自定義的宏,語法為${XXXX},本例中在Bundle nameBundle identifier中輸入${APP_NAME}、${APP_IDENTIFIER},在運(yùn)行程序的時(shí)候,app對應(yīng)的設(shè)置就會讀取大括號中的值自動(dòng)變更了。

info.plist修改

Cocoapods項(xiàng)目

當(dāng)項(xiàng)目是Cocoapods項(xiàng)目時(shí),
如果發(fā)現(xiàn)除了自帶的Release和Debug可以運(yùn)行外其他的都不能運(yùn)行,
可以嘗試選中pod的project,在它的配置中也添加對應(yīng)的Configuration就可以了。

參考文章:http://m.itdecent.cn/p/650c923255b0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容