Xcode -利用 Configuration/Scheme 實(shí)現(xiàn)多環(huán)境配置

應(yīng)用場(chǎng)景分析

在 iOS 開發(fā)過程中會(huì)遇到一個(gè)應(yīng)用對(duì)應(yīng)多個(gè)域名的情況,通常情況下使用 DEBUG 的宏來進(jìn)行判斷,這主要是基于 Xcode 中的 Configuration 默認(rèn)給我們創(chuàng)建了 Debug 和 Release 兩個(gè)環(huán)境。我們也可以對(duì)其進(jìn)行新增和修改,來滿足我們實(shí)際開發(fā)下的更多環(huán)境配置。比如: 多有一個(gè)預(yù)生產(chǎn)的環(huán)境域名,同一套代碼需要打包不同的 APP 發(fā)布等情況。


Configuration

Configuration

新增的時(shí)候是選擇一個(gè)進(jìn)行的復(fù)制,所以建議想要?jiǎng)?chuàng)建的環(huán)境與 Debug 和 Release 是相互對(duì)應(yīng)的,避免一些問題,這樣的話有一些配置你完全可以不用去在意。比如: 在 Release 環(huán)境會(huì)有一些優(yōu)化機(jī)制(內(nèi)聯(lián)優(yōu)化等)。


Build Setting 相關(guān)設(shè)置

Build Setting

在 PROJECT 和 TARGETS 里的 Bulid Setting 都會(huì)進(jìn)行設(shè)置,基于 PROJECT 和 TARGETS 的關(guān)系 TARGETS 會(huì)拷貝一部分 PROJECT 當(dāng)中的一部分設(shè)置,所以會(huì)先去設(shè)置 PROJECT 中的 Bulid Setting 再去對(duì) TARGETS 進(jìn)行對(duì)應(yīng)的檢查設(shè)置。(列舉一下我會(huì)用到的設(shè)置)

  1. info.plist File
  2. Product Bundle identifier
  3. Code Signing Identity
  4. Development Team
  5. CustomAppBundleld
  6. CustomProductName
  7. Preprocessor Macros 和 Active Compilation Conditions(預(yù)編譯宏,如果是純swift的項(xiàng)目 只需要設(shè)置后者)
  8. Asset Catalog Compiler - Options (App Icon 和 Launch Image 可以在 Assets 中新增)

在設(shè)置完成會(huì)一般會(huì)到 General 中去查看證書的選擇


info.plist

自定義宏后,打開info.plist,讀取自定義的宏,在運(yùn)行程序的時(shí)候,App對(duì)應(yīng)的設(shè)置就會(huì)讀取宏,對(duì)應(yīng)的值就會(huì)改變


info.plist

Scheme

  1. 新增: 可以選擇不同的 Target 進(jìn)行新增


    新增
  2. 編輯: Build Configuration 中選擇對(duì)應(yīng)得 Debug 或 Release


    編輯
  3. 在版本控制中需要將想控制的 Scheme 的 Shared 選中
    Scheme

Pod

是不是以為 Scheme 設(shè)置完成了就想 Command + R,是不是報(bào)錯(cuò)了! 是因?yàn)樵?Pod 中還沒有得到相對(duì)應(yīng)的環(huán)境配置。所以可以到 Pod 中的 Configurations 也要完成相應(yīng)的設(shè)置,或者去 pod install 一下就可以了。
注: 使用 cocoapods 管理項(xiàng)目的可以編輯 podfile 設(shè)置 build configuration 、 preprocessor macros 和 OTHER_SWIFT_FLAGS 等。


TARGETS

如果想完成多個(gè) APP 且多個(gè)環(huán)境,還可以結(jié)合 TARGETS 進(jìn)行 Configuration 配置和 Scheme 的創(chuàng)建。但要注意文件適用的 TARGETS。


TARGETS

TARGETS
  • 多target podFile配置
platform :ios, '8.0'

# 多個(gè)target共用一套pod的寫法,項(xiàng)目中不能有名字為CommonPods,防止沖突;
abstract_target 'CommonPods' do

# 共用的pod第三方
pod 'AFNetworking'
pod 'IQKeyboardManager'

   # 項(xiàng)目中的target各自的設(shè)置
   target ‘Target1’ do
   #可以在這里添加Target1獨(dú)自引用的pod第三方
   end
   target 'Target2’ do
   #可以在這里添加Target2獨(dú)自引用的pod第三方 
   end
end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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