Xcode配置測試環境和線上環境

前言:每次app在Release和Debug模式下都要來回改正式與測試的 BaseUrl以及其餘的url或者常量,有可能忘記改,咱們就上線,結果就可想而知,因而爲了不手動更改的麻煩和犯錯誤,咱們纔去配置環境。swift

使用.h文件配置宏定義

通常咱們會用頭文件配置環境,在須要使用的時候導入頭文件便可,這樣會更加簡潔,職能更加專注,更好維護, 代碼以下:api

#ifdef DEBUG
#define BaseURL @"https://test.app/api/"
#else
#define BaseURL @"https://app/api/"
#endif
複製代碼

可是這不是最好的方式,最好的方式經過Xcode中的Configurations Setting Fil(.xcconfig)來解決,這應該是最優的實現方式,從而根據DebugRelease來選擇相應的環境。xcode

使用.xcconfig配置步驟

一、建立三個 Configuration Settings File 文件,該文件的後綴爲.xcconfig, 三個文件的命名分別命名爲Common.xcconfig, Debug.xcconfig, Release.xcconfig, 其中 Debug.xcconfigRelease.xcconfig 可使用#include來包含Common.xcconfig配置文件, 注意在建立.xcconfig的時候Xcode默認是不會選中Targets的,注意要選中!bash

提示:Common.xcconfig, Debug.xcconfig, Release.xcconfig三個文件的名字本身能夠隨便起,不想改就以這三個名字就好,下面我就把這三個名字前都加上 JK,如:JKCommon.xcconfig, JKDebug.xcconfig, JKRelease.xcconfigapp

二、打開xcode,新建new file,選擇Configuration Setting File,並選中相應的Targets,以下圖: ide

1

2

三、修改DebugRelease 模式下的的配置,把工程切換到PROJECT—> info —> Configurations下,分別 配置DebugRelease模式下對應的 .xcconfig 配置文件,當建立了.xcconfig文件後,在每一個模式下自動做爲一個選項來選擇,這樣直接選擇.xcconfig 對應的文件名字便可,以下圖:測試

3

四、JKDebug.xcconfig 配置ui

#include "JKCommon.xcconfig"
// 測試下基礎的URL
JKURL = @"https:/$()/test.com/api/api/"
// 是測試的環境
JK_IS_PRODUCATION = NO
複製代碼

五、JKRelease.xcconfig 配置url

#include "JKCommon.xcconfig"
// 正式下基礎的URL
JKURL = @"https:/$()/app.com/api/api/"
// 是正式的環境
JK_IS_PRODUCATION = YES
複製代碼

提示:在 //之間使用 $()來轉義,如:JKURL = @"https:/$()/app.com/api/api/"spa

六、JKCommon.xcconfig配置

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) JKURL='$(JKURL)' JK_IS_PRODUCATION='$(JK_IS_PRODUCATION)'
複製代碼

提示:

  • Common.xconfig中第一個鍵的配置必須有 :GCC_PREPROCESSOR_DEFINITIONS = $(inherited),沒有Xcode會報錯;
  • 自定義鍵時的語法:宏名='$(key)', 在代碼或其餘地方使用宏名來引用,經過key來指定每一個模式下的對應的自定義鍵的名字,一般將宏的名字和key的名字保持一致,注意 等號先後必定不能有空格;
  • 特別注意:Common.xconfig中第一個key是GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 後面跟自定義的key,注意在第一個key後面跟上本身定義的key的時候必定不要回車換行,敲一個空格,而後在同一行後面追加就好了,換行會編譯錯誤,切記!

七、在 TARGETS —> Build Settings —> Preprocessor Macros 下查看本身的配置,如圖:

4

測試

上面配置完,咱們來測試一下是否好使。

NSLog(@"JKURL=%@",JKURL);
複製代碼

在 Debug 模式下測試結果:

JKURL=https://test.com/api/api/
複製代碼

在 Release 模式下測試結果:

JKURL=https://app.com/api/api/
複製代碼

補充:以上設置在OC中好使,在swift中很差使,swift設置須要改一下

//之間使用 反斜槓\來轉義,如:JKURL = app.com/api/api/

Info.plist 配置

1

讀取配置

2

參考

相關文章
相關標籤/搜索