iOS進(jìn)階01:多環(huán)境配置

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

多環(huán)境配置的三種方式:

  • 多tagert模擬多環(huán)境配置
    • 會生成多個 info.plist文件,配置繁瑣,容易出錯
  • 多 scheme + 多 configuration(Debug、Beta、Release)
  • 多 scheme + xcconfig文件配置 (推薦使用
    • 通過把配置寫到對應(yīng)的文件,管理起來更加清晰

多Target配置

  • 選中一個 Target,右擊,復(fù)制一個Target
    image

    復(fù)制之后,會多出來一個 Target和對應(yīng)的 info.plist文件
    image
  • 修改 Targetinfo.plist文件,對應(yīng)的Build Settings—> Packaging—>Info.plist File也需要寫成修改后的名稱,否則編譯器會報錯
    image
  • 修改完成后,就可以通過 Scheme選擇不同的 Target編譯運行
    image

    image

多 scheme + 多 configuration

  • 創(chuàng)建 Beta configuration

    image

  • 新建兩個 Scheme,分別命名為 DebugBeta

    image

  • Scheme設(shè)置對應(yīng)的 configuration

  • 創(chuàng)建自定義參數(shù) HOST_URL

    image

  • 在info.plist文件中添加 HOST_URL參數(shù)

    image

  • 通過讀取 Info.list就可以得到 相應(yīng)的 HOST_URL

NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"====%@", infoDic[@"HOST_URL"]);
image

image

多 scheme + xcconfig文件配置

通過下圖發(fā)現(xiàn),pod 就是通過 xcconfig文件進(jìn)行配置的

image

  • 創(chuàng)建自己的 xcconfig文件, 注意保存的名稱 Config-LoginApp.debug.xcconfig,參考pod命名規(guī)則, 文件名 - app名 . 環(huán)境 .xcconfig

    image

    image

  • xcconfig文件中自定義參數(shù) HOST_URL,以鍵值對形式設(shè)置

HOST_URL = www.debug.com
image
  • 在info.plist文件中添加 HOST_URL參數(shù)

    image

  • 通過讀取 Info.list就可以得到 相應(yīng)的 HOST_URL

NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"====%@", infoDic[@"HOST_URL"]);
image
  • xcconfig還可以修改 Target中的設(shè)置,下列以Other Linker Flags舉例
HOST_URL = www.debug.com
// OTHER_LDFLAGS 是 Other Linker Flags 的縮寫
OTHER_LDFLAGS = -framework "AFNetworking"

image

【注意】Xcode Build Settings更多縮寫內(nèi)容,可以通過這個網(wǎng)址查詢地址

xcconfig文件沖突解決

使用自己的 xcconfig文件,運行pod install時,報錯如下:

image

  • 通過 #include 引入其他 xcconfig文件

    image

  • 通過 #include導(dǎo)入的其他xcconfig文件,設(shè)置了一個配置,在自定義的xcconfig設(shè)置該配置,會覆蓋導(dǎo)入的其他xcconfig文件的配置,此時需要添加 $(inherited)(代表繼承)

    image

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容