我們之前項(xiàng)目配置域名都使用這種宏定義的方式,需要什么環(huán)境就注釋掉另外幾個,操作起來比較呆萌愈犹,這篇文章說一下如何使用Xcode的Configuration 配置不同的編譯環(huán)境。
image.png
1.配置不同環(huán)境下域名
1.1.定義好自己需要哪些環(huán)境(不用代碼寫)
這里創(chuàng)建4種環(huán)境:
1.開發(fā)人員環(huán)境 (Other)
直接連后臺人員電腦闻丑,與服務(wù)器聯(lián)調(diào)使用
2.開發(fā)環(huán)境(Debug)
完成需求漩怎,代碼上傳,在外網(wǎng)開發(fā)服務(wù)器調(diào)試
3.預(yù)發(fā)布 (PreRelease)
測試人員使用嗦嗡,copy的正式數(shù)據(jù)
4.正式環(huán)境 (Release)
上傳AppStore使用
1.2.定義預(yù)編譯文件(不用代碼寫勋锤,但是第1.4步要對應(yīng)上編號)
BUILD_VERSION = 0 -> 開發(fā)人員環(huán)境 (Other)
BUILD_VERSION = 1 -> 開發(fā)環(huán)境 (Debug)
BUILD_VERSION = 2 -> 預(yù)發(fā)布環(huán)境 (PreRelease)
BUILD_VERSION = 3 -> 正式環(huán)境 (Release)
1.3.在pch中定義不同環(huán)境的URL
#if (BUILD_VERSION == 0)
//開發(fā)人員環(huán)境 (Other)
#define BaseHostUrl @"http://***.*****.**/api/"
#define SERVICEHostURL @"http://***.*****.**"
#elif (BUILD_VERSION == 1)
//開發(fā)環(huán)境(Debug)
#define BaseHostUrl @"http://***.*****.**/api/"
#define SERVICEHostURL @"http://***.*****.**"
#elif (BUILD_VERSION == 2)
//預(yù)發(fā)布 (PreRelease)
#define BaseHostUrl @"http://***.*****.**/api/"
#define SERVICEHostURL @"http://***.*****.**"
#elif (BUILD_VERSION == 3)
//正式環(huán)境 (Release)
#define BaseHostUrl @"http://***.*****.**/api/"
#define SERVICEHostURL @"http://***.*****.**"
#endif
1.4.配置configuration
image.png
image.png
image.png
切換環(huán)境運(yùn)行,就會看到域名會隨著切換的環(huán)境進(jìn)行改變成對應(yīng)的地址酸钦。
備注:如果運(yùn)行報error: unable to parse contents of file list '/xxx/Pods/Target Support Files
/Pods-xxx/Pods-xxx-frameworks-Debug-input-files.xcfilelist'
類似的錯誤怪得,是因?yàn)閜ods的庫找不到路徑了,你改好上面的配置后卑硫,再重新pods一下項(xiàng)目,編譯應(yīng)該就可以過了蚕断。
2.配置不同環(huán)境下的Bundle Id和Display name
image.png
分別添加APP_BUNDLE_ID 和APP_DISPLAY_NAME兩項(xiàng)欢伏,并配置各環(huán)境相對應(yīng)的值
image.png
然后點(diǎn)擊TARGET->Info,將Bundle identifier 對應(yīng)的值改成$$(APP_BUNDLE_ID)亿乳,Bundle name 對應(yīng)的值改為$(APP_DISSPLAY_NAME)
image.png
3.配置不同環(huán)境下的AppIcon
image.png
然后再點(diǎn)PROJECT->Build Setting 找到Asset Catalog App Icon Set Name硝拧,將第一步中添加的icon名稱配置到相應(yīng)環(huán)境中。
image.png
至此葛假,通過Xcode配置不同環(huán)境下的域名障陶、bundle ID、bundle name和appicon就完成了聊训。