Xcode-利用Configuration實現多個配置
https://www.jianshu.com/p/650c923255b0
<p>
iOS開發過程中總是會遇到一個應用對應多個域名的情況,測試地址、生產地址、後臺介面開發者的個人主機地址,每次打包或者安裝的時候都要手動去修改一下地址相當麻煩,而Xcode正好提供了一個可以輕鬆解決這種情況的機制—Configuration,而且,Configuration的功能遠不止於此。
</br>
與Configuration關聯的Build Settings屬性
</br>
* Configuration*
如何找到Configuration
預設有Debug、Release兩種配置,這裡我們嘗試新增TestA、TestB,如圖所示。
1.Build Active Architecture Only
如何找到Build Active Architecture Only</br>
在Build Settings中:Architectures
想支援的指令集Valid Architectures
有效的指令集Build Active Architecture Only
是否只編譯當前裝置適用的指令集(如果這個引數設為YES,那麼如果你用iPhone 6除錯,最終生成的一個只支援arm64指令集的Binary,不過指令集是向下相容的,比如用iPhone4(armv7)編譯出來的APP,可以在iPhone5(armv7s)上執行,因為armv7s向下相容armv7,但是不可以在iPhone3G(armv6)上執行;如果這個引數設為NO,最終生成一個支援 Architectures 中所有指令集的Binary,所以一般在DEBUG模式下設為YES,RELEASE設為NO,這樣可以加快打包的速度)
iOS裝置的指令集常見的有以下幾種:
- ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
- ARMv7s: iPhone 5, iPhone 5c, iPad 4
- ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
- ARMv6: iPhone, iPhone 3G, iPod 1G/2G
</br>
因為Configuration在原來的基礎上添加了兩個TestA、TestB,所以Build Active Architecture Only 中也出現了四個條目,供分別配置。
</br>
2.Code Signing
Code SigningCode Signing 中的
- Code Signing Identity
- Other Code Signing Flags
- Provisiong Profile
同樣多出了TestA、TestB兩個選項,這樣就可以針對不同的配置使用不同的證書了。
</br>
3.Preprocessor Macros 預編譯巨集
8F78A689-441D-452B-9FED-809860E3BCD6.png</br>就相當於在程式中定義了巨集一樣,這些巨集可以在程式碼中使用,如圖所示我們在所有的配置中都添加了一個AppType,只是賦的值不同,我們可以在程式碼中根據AppType的不同值呼叫不同的程式碼,如下所示:
// 這段程式碼放在你定義域名的地方,然後根據APP_Type 初始化各種情況下域名的值
#if (APP_Type == 0)
// Debug
#define a @"000000"
#elif (APP_Type == 1)
// Release
#define a @"111111"
#elif (APP_Type == 2)
// TestA
#define a @"222222"
#elif (APP_Type == 3)
// TestB
![Uploading CA914A5C-31B3-48FB-A5F1-71CCB3B37B80_595336.png . . .]
#define a @"333333"
#endif
這裡會有Debug、Release、TestA、TestB四個選項,選擇不同配置,a 的值不同
</br>
4.Asset Catalog Compiler - Options
1.新增Icon的圖片集
新增Icon的圖片集2.在配置中修改配置對應的Icon圖集
修改配置對應的Icon圖集</br>
5.User-Defined
1.在本例中,我們自定義兩個設定:APP_IDENTIFIER、APP_NAME
自定義配置2.自定義好使用者自定義巨集後,開啟info.plist,讀取自定義的巨集,語法為${XXXX}
,本例中在Bundle name 、 Bundle identifier中輸入${APP_NAME}
、${APP_IDENTIFIER}
,在執行程式的時候,app對應的設定就會讀取大括號中的值自動變更了
</br>
總結
相信看了這些其他沒有提及的讀者你也會依葫蘆畫瓢了,不過我在配置這個的時候也遇到一個問題,現在我們大部分專案其實都是會用到coacopod的,在有coacopod配置的情況下新增配置,你會發現除了自帶的Release和Debug可以執行外其他的都不能執行,原因是app無法尋找到對應的pod庫,解決這個問題,我們只需要選中pod的project,在它的配置中也新增對應的Configuration就可以了,希望能幫到你~