XCode多環(huán)境配置

前言

? ? ?在項目開發(fā)過程中,我們通常會有多個項目環(huán)境,比如開發(fā)、測試、預(yù)發(fā)、正式環(huán)境等,而Xcode默認是只有debug和release兩種環(huán)境的,并且切換起來不是那么方便。當需要開發(fā)打多個包的時候,一般常見做法就是直接代碼里面修改環(huán)境變量,改完之后Archive一下就打包了。當然這種做法沒問題,只不過不是很優(yōu)雅很高效。為了更優(yōu)雅的解決這個問題,我們可以利用xcode提供的 Targets、scheme以及xcconfig來解決這個問題。

目錄

1、通過Targets來實現(xiàn)多環(huán)境配置

2、通過Build Configuration來實現(xiàn)多環(huán)境配置

3、通過xcconfig來實現(xiàn)多環(huán)境配置

一、通過Targets來實現(xiàn)多環(huán)境配置

1、復(fù)制Targets

新建Xcode時會自動創(chuàng)建一個默認的Target,我們?nèi)绻约盒略龅脑?,可以通過復(fù)制的方式快捷創(chuàng)建第二個,復(fù)制會將已有的資源以及工程屬性copy一份。

1、復(fù)制target

2、修改復(fù)制后Target的名稱、生成的對應(yīng)info.plist文件名稱,修改target相關(guān)的info.plist文件配置

2.修改Target名稱

3、設(shè)置預(yù)編譯宏

3.設(shè)置預(yù)編譯宏

4、根據(jù)不同的配置來加載不同的文件或者變量

4.根據(jù)宏來加載不同的文件

5、其他應(yīng)用

? ? ? 給不同的target配置不同的Bundle Identifier以及圖標和名稱,來實現(xiàn)擁有相似功能的多app開發(fā)。共用文件時,用宏區(qū)!但有些文件就共用就不方便,如Info.plist文件。不共用文件,就設(shè)置選擇屬于自己的Target

5.多target開發(fā)多個應(yīng)用

二、通過Build Configuration來實現(xiàn)多環(huán)境

1、新建Build Configuration

? ? ? ?通過Project里的info找到Configuration,然后選擇添加新的Configuration。系統(tǒng)默認Debug和Release兩種。這里我們需要選擇是復(fù)制一個Debug還是Release。值得注意的是,Release默認是進行了脫符號處理,編譯出來的包體積回比Debug模式要小一點,會屏蔽部分參數(shù),具體可以通過BuildSetting里面的配置來查看區(qū)別。

1、新建Build Configuration

2、新建Scheme

為新的Configuration新建一個編譯Scheme,使用Manage Scheme添加Scheme

2
3

通過Edit scheme 來編輯各個Scheme對應(yīng)的Build Configuration

4

以上多環(huán)境已經(jīng)好啦,現(xiàn)在舉個??:

我們通過User-Define來添加HOST_URL來作為請求的服務(wù)器地址,在不同的scheme環(huán)境下配置不同的地址

5

通過info.plist文件來暴露這個變量

<key>HOST_URL</key>

<string>${HOST_URL}</string>

6

最后在項目里通過切換不同的scheme就可以打印各環(huán)境下的HOST_URL啦

7

項目里的bundle id還有圖標也可以通過這種方式來配置不同環(huán)境下的


8
9

三、通過xcconfig文件來實現(xiàn)多環(huán)境

多環(huán)境配置

1、新建一個配置目錄,在目錄里new兩個xcconfig文件,注意的是這兒文件名命名規(guī)矩一般是遵循:文件夾名+ APP名 + 環(huán)境名

1

2、新建文件后我們在project里面設(shè)置一下

2

這里各環(huán)境對應(yīng)的config文件已經(jīng)配置好了,現(xiàn)在我們在文件里添加變量,并通過info.plist文件暴露出該變量

<key>HOST_URL</key>

<string>${HOST_URL}</string>

3
4

通過info.plist文件訪問這個變量的值,可以看到不同環(huán)境下變量的值是不一樣的

5

注意:

在xcconfig文件里的的雙斜線會被認為是注釋,我們需要對服務(wù)器地址的雙斜線進行處理一下

6

? ?我們一般對動態(tài)庫配置是通過build setting中的Other Linker Flags來處理的,在xcconfig文件中只需添加OTHER_LDFLAGS?就可以對Other Linker Flags添加動態(tài)庫


7


8

? ? ? ? 其實OTHER_LDFLAGS便是裝備到鏈接器里邊,本質(zhì)上Config文件是key-value方法進行裝備的,已然OTHER_LDFLAGS能夠裝備,那buildSetting里邊悉數(shù)涉及到環(huán)境變量的參數(shù)都能裝備,還有許多參數(shù)能夠裝備,詳細能夠查看xcodebuildsettings這個網(wǎng)站。

xcconfig沖突

? ? ? ?如果我們在項目中運用cocoapods,項目會幫我們生成一組xcconfig文件,然后pod install時會發(fā)現(xiàn)cocoapods會報錯這個警告:

1

? ? ? 從警告可以看出cocoapods發(fā)現(xiàn)咱們自己裝備了config文件,所以它沒有幫咱們裝備。我們可以將cocoapods生成的config文件導(dǎo)入到咱們自界說的config文件里邊,而導(dǎo)入方法便是經(jīng)過include + 文件途徑,導(dǎo)入后,咱們在進行pod install,發(fā)現(xiàn)警告消除了


2

當兩個config文件都有同一個配置的話會發(fā)成沖突,只生成我們配置文件的變量,這個時候我們可以通過$(inherited)處理

$(inherited) :是繼承的意思,它會將導(dǎo)入的Config文件里相同變量的值拼接起來,可是在buildSetting里邊只會顯現(xiàn)$(inherited)、里邊本身所寫的,還有裝備的config文件里邊的信息,實際上所有的信息都是導(dǎo)入的

3


4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容