Xcode配置測試環境和線上環境
一般我們會用標頭檔案配置環境,在需要使用的時候匯入標頭檔案即可,這樣會更加簡潔,職能更加專一,更好維護, 程式碼如下:
#ifdef DEBUG #define BaseURL @"https://test.app/api/" #else #define BaseURL @"https://app/api/" #endif 複製程式碼
但是這不是最好的方式,最好的方式通過 Xcode
中的 Configurations Setting Fil(.xcconfig)
來解決,這應該是最優的實現方式,從而根據 Debug
和 Release
來選擇相應的環境。
使用.xcconfig配置步驟
1、建立三個 Configuration Settings File
檔案,該檔案的字尾為 .xcconfig
, 三個檔案的命名分別命名為 Common.xcconfig
, Debug.xcconfig
, Release.xcconfig
, 其中 Debug.xcconfig
和 Release.xcconfig
可以使用 #include
來包含 Common.xcconfig
配置檔案, 注意在建立 .xcconfig
的時候Xcode預設是不會選中Targets的,注意要選中!
提示: Common.xcconfig
, Debug.xcconfig
, Release.xcconfig
三個檔案的名字自己可以隨便起,不想改就以這三個名字就好,下面我就把這三個名字前都加上 JK
,如: JKCommon.xcconfig
, JKDebug.xcconfig
, JKRelease.xcconfig
。
2、開啟xcode,新建new file,選擇 Configuration Setting File
,並選中相應的Targets,如下圖:


3、修改 Debug
和 Release
模式下的的配置,把工程切換到 PROJECT
—> info
—> Configurations
下,分別 配置 Debug
和 Release
模式下對應的 .xcconfig
配置檔案,當建立了 .xcconfig
檔案後,在每個模式下自動作為一個選項來選擇,這樣直接選擇 .xcconfig
對應的檔名字即可,如下圖:

4、 JKDebug.xcconfig
配置
#include "JKCommon.xcconfig" // 測試下基礎的URL JKURL = @"https:/$()/test.com/api/api/" // 是測試的環境 JK_IS_PRODUCATION = NO 複製程式碼
5、 JKRelease.xcconfig
配置
#include "JKCommon.xcconfig" // 正式下基礎的URL JKURL = @"https:/$()/app.com/api/api/" // 是正式的環境 JK_IS_PRODUCATION = YES 複製程式碼
提示:在 //
之間使用 $()
來轉義,如: JKURL = @"https:/$()/app.com/api/api/"
6、 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的時候一定不要回車換行,敲一個空格,然後在同一行後面追加就行了,換行會編譯錯誤,切記!
7、在 TARGETS
—> Build Settings
—> Preprocessor Macros
下檢視自己的配置,如圖:

測試
上面配置完,我們來測試一下是否好使。
NSLog(@"JKURL=%@",JKURL); 複製程式碼
在 Debug 模式下測試結果:
JKURL=https://test.com/api/api/ 複製程式碼
在 Release 模式下測試結果:
JKURL=https://app.com/api/api/ 複製程式碼
轉載自:IIronMan iOS Debug和Release環境的最新配置