iOS開發(fā)-多環(huán)境適配

作為一個(gè)前端開發(fā)人員,在開發(fā)過程中,難免與服務(wù)器打交道,同一套代碼,后端為了支持不同的場景,需要部署多個(gè)環(huán)境,比如開發(fā)、測試、生產(chǎn)等。就我們公司的項(xiàng)目而言,有開發(fā)、預(yù)發(fā)布、發(fā)布環(huán)境。如果不做多環(huán)境適配的話,每次想要切換環(huán)境,可能就需要改一大堆代碼,注釋、取消注釋...
我們可以通過Xcode的設(shè)置,來快速切換不同環(huán)境

需求描述:

  • 開發(fā)過程中:要隨時(shí)能切換并運(yùn)行任意環(huán)境
  • 測試環(huán)境:打包時(shí)生成的是測試環(huán)境地址的測試包
  • 預(yù)發(fā)布環(huán)境:打包時(shí)生成的是預(yù)發(fā)布環(huán)境地址的測試包
  • 發(fā)布環(huán)境:打包時(shí)生成的是生產(chǎn)環(huán)境地址的正式包

思路:

新建測試環(huán)境Testing預(yù)發(fā)布環(huán)境Staging、發(fā)布環(huán)境Production幾個(gè)配置,與原來的Debug下的開發(fā)環(huán)境Develop組成四種環(huán)境
Debug模式下:四個(gè)環(huán)境均可運(yùn)行。其他模式下,各自運(yùn)行各自的環(huán)境;

實(shí)現(xiàn)步驟:

1. 選擇項(xiàng)目 - Project - Info - Configuration

點(diǎn)擊 + ,選擇參照release。依次新建Testing、Staging、Production三種配置。


新增配置
2. 項(xiàng)目 - Project - Build Settings - 搜索"custom flags"

參照Debug,修改其余幾種模式,分別給其設(shè)置標(biāo)記。注意,每個(gè)里面有個(gè)$(inherited)也要加上

設(shè)置標(biāo)記

3. 項(xiàng)目 - Project - Build Settiongs 搜索"Preprocessor Macros"

參照Debug,修改其余幾種模式,對預(yù)編譯宏定義進(jìn)行默認(rèn)賦值
宏定義賦值
4. 集成了Cocoapods的,此時(shí)要更新一下pod,重新編譯。
5. 修改運(yùn)行時(shí)的環(huán)境為Staging環(huán)境(只做嘗試,驗(yàn)證宏是否起作用,運(yùn)行時(shí)選擇環(huán)境有其他方法),添加測試代碼,打印當(dāng)前的環(huán)境
至此,多環(huán)境配置成功??梢詤^(qū)分運(yùn)行環(huán)境,并做不同處理了。接下來,可以將不同環(huán)境的域名寫在各自配置中:
1. 添加自定義環(huán)境變量MY_APP_BASE_URL
添加自定義環(huán)境變量
2. 將MY_APP_BASE_URL放入info.plist文件中轉(zhuǎn)化成鍵值對,方便取值。
3. 測試,用Bundle.main.infoDictionary!["MY_APP_BASE_URL"] as! String取出當(dāng)前環(huán)境的服務(wù)器地址。
至此,多個(gè)環(huán)境運(yùn)行各自的服務(wù)器地址的需求已完成。接下來實(shí)現(xiàn)Debug模式下切換不同的環(huán)境地址:

以枚舉的方式,選擇debug模式下,運(yùn)行的服務(wù)器地址,只有開發(fā)階段,我們需要在Debug模式下調(diào)試各個(gè)環(huán)境地址,其他幾種模式,都運(yùn)行各自環(huán)境,不需要適配。

Debug模式下切換不同域名也已經(jīng)完成。如果想在設(shè)備上運(yùn)行不同環(huán)境,并且同時(shí)存在,可以接著配置:

  • 想要在設(shè)備上,同時(shí)存在各個(gè)環(huán)境的App,需要設(shè)置不同的bundleId。這里僅演示Staging環(huán)境區(qū)分,其他的也可視情況單獨(dú)配置
  • 想要不同環(huán)境,使用不同的應(yīng)用名:
  • 想要不同環(huán)境,使用不同的AppIcon:

大功告成!

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

相關(guān)閱讀更多精彩內(nèi)容

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