前言
在代碼中,我們可以通過#ifdef DEBUG
宏定義來針對不同環境做不同設置,但是對于 info.plist 中的屬性,我們又該如何針對不同環境(DEBUG vs RELEASE)做不同配置呢?
前兩天,在適配 HTTPS 時,由于我們的測試環境服務器沒有啟用 HTTPS,只有正式環境的服務器啟用了 HTTPS ,所以在項目中需要針對不同環境做不同的 ATS 配置處理。這個配置也涉及到 info.plist 中 ATS 相關屬性的修改,這也就引出了 info.plist 是否可以動態配置的問題了。
一開始,我想 info.plist 本質上是一個 XML 文件,那么 XML文件中可不可以通過 #ifdef DEBUG
宏定義來動態配置呢?然后我就嘗試了一下這種做法,結果編譯不通過。實踐證明此方法不可行。
然后,我又想 build setting 中不是可以分別設置 debug 和 release 模式下的一些參數么,于是到 build setting 中搜索了一下 info.plist,沒想到還真有這個模塊,release 和 debug 模式的默認值都是 info.plist。
接下來,我自己也復制了一個 info.plist,并改名 infoDebug.plist,然后修改了一些針對 debug 模式的參數,最后回到 build setting 中,將對應的選項值改為 infoDebug.plist,Command+B 編譯一下之后,大功告成!
除此之外,如果我們如果需要動態配置開發或者生產網絡環境, 以及在多項目和運行中切換環境,可以借助 Xcode 配置文件 xcconfig 來實現。
參考資料:
1.Xcconfig變量設置說明: http://www.lxweimin.com/p/44c82630bd50
2.iOS開發必備 - 環境變量配置(Debug & Release): http://blog.startry.com/2015/07/24/iOS_EnvWithXcconfig/