每個(gè) App
項(xiàng)目可以有多個(gè)環(huán)境, 開發(fā)環(huán)境
、 測試環(huán)境
、 預(yù)發(fā)布環(huán)境
和 生產(chǎn)環(huán)境
,至少有 開發(fā)環(huán)境
和 生產(chǎn)環(huán)境
成都創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都格柵板等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
研發(fā)同學(xué)和測試同學(xué)經(jīng)常需要在環(huán)境間切換,產(chǎn)品同學(xué)有時(shí)候也會(huì)心血來潮的看看各種版本,也就是說,有時(shí)候需要測試版本,有時(shí)候又需要正式版本,我之前的做法就是每次切換 url
,然后重新打包,或者重新運(yùn)行,超麻煩~
那么有沒有可能在一個(gè)手機(jī)直接裝多個(gè)版本吶?
答案肯定是有滴(否則還碼這篇文章干嘛吶~)
個(gè)人覺得最好的方案就是 ------ 環(huán)境分離,即不同的環(huán)境對應(yīng)不同的 app
每個(gè)Target代表一個(gè)編譯的產(chǎn)品。每個(gè)Target,可以有不同的編譯源文件和資源文件。那么,實(shí)現(xiàn)環(huán)境分離的方案,就是分別建立測試環(huán)境和生產(chǎn)環(huán)境的兩個(gè)Target。默認(rèn)的Target作為生產(chǎn)環(huán)境的Target,在此基礎(chǔ)上復(fù)制多一個(gè)Target作為測試環(huán)境的Target。
一個(gè) app
只能有一個(gè)唯一標(biāo)示, iOS
使用的是 Bundle Identifier
, Android
使用的是包名,因此,在一個(gè)手機(jī)上安裝多個(gè)環(huán)境的 app
,只需要每個(gè)環(huán)境的 Bundle Identifier
或者包名不同即可, 一般做法是在后面添加環(huán)境后綴,比如生產(chǎn)環(huán)境為 com.shenfengfeng.myapp
,那么測試環(huán)境就可以為 com.shenfengfeng.myapp.alpha
, app
名字會(huì)更新,當(dāng)然也可以手動(dòng)改,當(dāng)然也還可以改圖標(biāo),用來在同一個(gè)手機(jī)上區(qū)分版本
但是這種做法有個(gè)不好的地方就是需要,需要針對不同的環(huán)境,申請,不同的第三方的 appKey
、 appSecret
那么是來回注釋,還是申請賬號(hào),看自己取舍吧~
概述: iOS app
可以通過創(chuàng)建不同環(huán)境的Target來實(shí)現(xiàn)環(huán)境分離,不同Target可以設(shè)置不同的 bundle id
、名稱、圖標(biāo)等。每個(gè) target
也對應(yīng)的 plist
文件
1、復(fù)制 target
,選中后右鍵,選擇 Duplicate
2、默認(rèn)的名字為 **** copy
3、修改 target
和 bundle id
,需要注意的是,在修改 target
的名字后,需要切換到 Xcode
的其他地方(比如其他 target
)后再切回來,然后 display name
會(huì)自動(dòng)適配
4、項(xiàng)目結(jié)構(gòu)里面會(huì)多一個(gè)默認(rèn) target
名字的 ***.plist
文件
5、 右鍵 show in finder
,將這個(gè) plist
文件改名,并且移到項(xiàng)目的原本的 plist
文件的同級(jí)目錄,然后重新添加到項(xiàng)目中,注意選擇的 target
6、看下圖
7、因?yàn)橐苿?dòng)了新的 target
的 plist
文件,所需要重新關(guān)聯(lián)到新的 plist
文件,關(guān)聯(lián)后隨意切換后會(huì)刷新
8、按著鍵盤 option
,點(diǎn)擊 Xcode
運(yùn)行按鈕(左上方),然后點(diǎn)擊 Manage Schemes
9、重命名新創(chuàng)建 schemes
10、如圖
11、右鍵新建 AppIcon
12、選擇新的 target
對應(yīng)的 AppIcon
13、關(guān)鍵步驟
設(shè)置了不同的 target
后,代碼上可以根據(jù)不同的 target
來做不同的處理,就需要知道,當(dāng)前在編譯的是哪個(gè) target
這可以通過,預(yù)編譯宏來區(qū)分,比如在 runtime alpha
的 target
的 Build Settings
中,在 Preprocessor Macros
中添加 FF_ALPHA
(也可以給 target
runtime
設(shè)置 FF_ALPHA=0
,給 runtime alpha
設(shè)置 FF_ALPHA=1
)
14、代碼中就可以如下判斷,依據(jù)實(shí)際情況
#ifdef FF_ALPHA #define FF_URL @"****" #elif ... #define FF_URL @"****" #else #define FF_URL @"****" #endif
15、結(jié)束,非常感謝看到這里的小伙伴,筆者感覺到很開心~
切換 Scheme
時(shí)候,遇到如下圖報(bào)錯(cuò)
筆者將模擬器格式化后正常, Xcode 9.*
---> Hardware → Erase All Content and Settings...
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。