iOS-Xcode多環(huán)境配置

多環(huán)境配置方案

常見名詞解析:

Project:包含項目所有的代碼,資源文件,所有信息;
Target:對指定代碼和資源文件的具體構(gòu)建方式;
Scheme:對指定Target的環(huán)境配置。

多target 配置方案
  • 創(chuàng)建一個新的Target
    在原來Target的基礎(chǔ)上copy一份,伴隨著會copy一份info.plist文件,然后修改名稱,把copy的info.plist指向新的target:


    copy新的Target.png

    修改Target名稱.png

    優(yōu)點:Target方式適合在同一份代碼中生成不同的app的情況下使用,因為可以配置不同的bundleID和證書;
    缺點:如果只是用作多環(huán)境的話操作繁瑣,要設(shè)置多個build setting。

多個配置變量(scheme)

創(chuàng)建scheme:


創(chuàng)建多Scheme.png

在build setting的User-Defined中添加自定義變量,比如HOST_URL:


多Scheme使用示例.png

配置Info.plist文件:
截屏2021-09-08 下午12.48.41.png

代碼讀取Info.plist中的HOST_URL:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *info = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSString *hostUrl = info[@"HOST_URL"];

HOST_URL會根據(jù)不同scheme的配置讀取相應(yīng)的值,實現(xiàn)多環(huán)境配置。
相對于多個target方式不需要設(shè)置多個build setting。

多個xcconfig文件

為多個環(huán)境分別創(chuàng)建xcconfig,并指定Scheme對應(yīng)的xcconfig:


截屏2021-09-08 下午2.30.41.png

使用示例:


config.jpg

每個xcconfig都寫上對應(yīng)環(huán)境的變量,比如這里的HOST_URL。
與多個Scheme一樣,配置Info.plist,然后在代碼里面讀取出來。

xcconfig比上面兩種方式更加方便,而且避免直接修改build setting文件,而是可以直接通過xcconfig文件來修改build setting的內(nèi)容。比如說CocoaPods就是利用xcconfig實現(xiàn)Other Linker Flags、paths等的自動配置。另外xcconfig文件還能引用(include)其他的xcconfig文件,并且會復(fù)用被引用的xcconfig文件的配置。
備注:在xcconfig文件配置build setting 文件需要使用build setting字段的縮寫,縮寫可以參考官方文檔

使用xcconfig要注意沖突

比如說對于Other Linker Flags的配置, 你自己xcconfig配置如下:

OTHER_LDFLAGS = -framework "AFNetworking"

如果別的xcconfig文件也有OTHER_LDFLAGS的配置,那么就會出現(xiàn)沖突,這時候要需要加上inherited關(guān)鍵字,比如可以改成:

OTHER_LDFLAGS = $(inherited) -framework "AFNetworking"

inherited表示繼承的意思。

最后編輯于
?著作權(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)容