Xcode通過Build Configuration配置多套域名方法

摘要

在我們實(shí)際開發(fā)中,后臺(tái)服務(wù)器一般都會(huì)有幾套地址,如:測(cè)試,預(yù)生產(chǎn),生產(chǎn)。這時(shí),我們項(xiàng)目打不同環(huán)境包時(shí),如果通過注釋代碼或修改域名也是可以達(dá)到目的。但是這樣比較煩鎖還容易出錯(cuò)。像我們公司,還有一套性能測(cè)試環(huán)境,所有的第三方接口處理都需要屏蔽,如果還這樣來修改,熟悉代碼還好,幾分鐘可以注釋好,但是對(duì)于一個(gè)不熟悉的同事,那么就會(huì)顯得舉步最艱難了,于是這篇文章講述下,只通過修改Xcode中scheme的configaration配置項(xiàng),選擇你要的環(huán)境,一步切換環(huán)境,簡(jiǎn)單實(shí)用且不會(huì)出錯(cuò)。


使用場(chǎng)景

針對(duì)不對(duì)的域名或環(huán)境,實(shí)現(xiàn)打包或運(yùn)行的代碼不一致。

步驟
  • 一、創(chuàng)建一個(gè)configuration


    scheme1.png

    如上圖,一般我們都是直接Duplicate Debug,因?yàn)閞elease模型是不支持?jǐn)帱c(diǎn)調(diào)試的。

  • 二、然后我們就可以在scheme中看到我們新添加的


    scheme2.png

    這里我添加了2個(gè)環(huán)境,一個(gè)Pre為預(yù)生產(chǎn),一個(gè)Test為性能測(cè)試。分別實(shí)現(xiàn)兩套不同的環(huán)境。

  • 三、修改build settings下的Preprocessor Macros下對(duì)應(yīng)的值

    scheme3.png

    注意:經(jīng)測(cè)試,這一步完全可以省略,也是可能實(shí)現(xiàn)功能的。

  • 四、各個(gè)配置下添加自定義標(biāo)簽other swift flags,如下圖

    scheme4.png

    這一步才是重點(diǎn),我們代碼中就是通過判斷flags來實(shí)現(xiàn)。
    注意Debug下,默認(rèn)是有一個(gè)DEBUG標(biāo)簽,代碼中盡量不要用,而是用自己自定義的XYJDEBUG,不然選擇其它配置也會(huì)跑到DEBUG環(huán)境下的代碼。


測(cè)試

  • 配置選擇,如圖,在run模型下,build configuration選擇不同的配置,然后運(yùn)行程序,會(huì)執(zhí)行對(duì)應(yīng)的代碼,如果打包,在archive模型下,去選擇build configuration即可。


    scheme5.png
  • 測(cè)試示例代碼
#if XYJDEBUG // 測(cè)試環(huán)境
let baseUrl = "https://test.baidu.com/"
#elseif Pre // 預(yù)生產(chǎn)
let baseUrl = "https://pre.baidu.com/"
#elseif Test // 性能測(cè)試
let baseUrl = "https://functionTest.baidu.com/"
#else // 生產(chǎn)
let baseUrl = "https://app.baidu.com/"
#endif


class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 測(cè)試代碼
        testPrint()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    
    func testPrint() -> Void {
        
        //打印地址
        print("請(qǐng)求的基址為:\(baseUrl)")
        
        #if XYJDEBUG
                print("測(cè)試環(huán)境")
        #elseif Pre
                print("Pre環(huán)境")
        #elseif Test
                print("Test性能測(cè)試環(huán)境")
        #else // 生產(chǎn)
                print("生產(chǎn)環(huán)境")
        #endif
    }

}

cocoapods報(bào)錯(cuò)

  • 如果項(xiàng)目中使用了cocoapods管理第三方,那么選擇你新創(chuàng)建出來的項(xiàng)目build時(shí),會(huì)報(bào)找不到第三方庫錯(cuò)誤。解決辦法如下:


    configuration.png

寫在最后

很多功能都可以通過這個(gè)實(shí)現(xiàn)多套環(huán)境(通過修改build settings里的一般都可以),如:appicon,appName,bundleId,info.plist等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評(píng)論 6 540
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,275評(píng)論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,368評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,736評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,919評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,481評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,235評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,427評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,656評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評(píng)論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,160評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,380評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,711評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,818評(píng)論 18 139
  • 【轉(zhuǎn)載】曾夢(mèng)想仗劍走天涯 1.Xcode IDE概覽 說明:從左到右,依次是“導(dǎo)航窗格(Navigator)->邊...
    06a6a973d7ab閱讀 3,864評(píng)論 2 20
  • 1.Xcode IDE概覽 說明:從左到右,依次是“導(dǎo)航窗格(Navigator)->邊列(Gutter)->焦點(diǎn)...
    小地閱讀 5,380評(píng)論 0 9
  • 25歲的年紀(jì),諸多困惑與迷茫。自己酷似一只信息海洋里的浮游生物,也許明白自己需要什么,但無奈能力不足,只能憑借環(huán)境...
    腫瘤小白Daisy要努力噠閱讀 428評(píng)論 0 0