1. 程式人生 > 實用技巧 >Xcode-利用Configuration實現多個配置

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 Signing

Code 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對應的設定就會讀取大括號中的值自動變更了

修改info.plist

</br>

總結

相信看了這些其他沒有提及的讀者你也會依葫蘆畫瓢了,不過我在配置這個的時候也遇到一個問題,現在我們大部分專案其實都是會用到coacopod的,在有coacopod配置的情況下新增配置,你會發現除了自帶的Release和Debug可以執行外其他的都不能執行,原因是app無法尋找到對應的pod庫,解決這個問題,我們只需要選中pod的project,在它的配置中也新增對應的Configuration就可以了,希望能幫到你~

相關連結

iOS多環境配置
IOS 利用Configuration 配置不同的編譯環境