1概念:
Project:包含了項(xiàng)目所有代碼秩彤、資源文件杨凑、所有信息
Target: 對(duì)指定代碼和資源文件的具體構(gòu)建方式,從而生成一個(gè)特定的Product哀蘑。
Scheme:對(duì)指定Target的環(huán)境配置。
2創(chuàng)建
2.1創(chuàng)建Target
選中當(dāng)前Target -> 右鍵選擇Duplicate -> 彈窗中選Duplicate Only
2.2新建Scheme
?點(diǎn)擊左上角選擇框 -> Edit Schemes -> 選中當(dāng)前Target -> 設(shè)置Scheme Name
2.3新建Configuration
選擇Project -> Info -> Configurations -> 點(diǎn)擊加號(hào) -> 新建Configuration
此時(shí)Scheme中的Build Configuration中的選項(xiàng)多了一個(gè)添加的Beta,默認(rèn)Project創(chuàng)建了Debug和Release兩個(gè)Build Configuration葵第。
個(gè)人感受:我個(gè)人覺得項(xiàng)目要生成Product的需要差異比較大(比如SDK不同绘迁,涉及的文件、圖片卒密、資源不同等)則需要?jiǎng)?chuàng)建不同的Target缀台,如果只是單純的配置方面的問題(域名、參數(shù)哮奇、鏈接)則只需要?jiǎng)?chuàng)建不同的Scheme就可以了膛腐。
3,使用
創(chuàng)建不同的Scheme后鼎俘,進(jìn)行一次測試
選中Target -> Build Setting -> Add User-Defined Setting
創(chuàng)建HOST_URL設(shè)置 Release哲身、Debug、Beta配置不同的地址
在Info.plist里設(shè)置鍵值對(duì) HOST_URL : ${HOST_URL}贸伐,在代碼中獲取對(duì)應(yīng)的值
工程Run的時(shí)候選擇對(duì)應(yīng)的Target和Scheme,對(duì)打印出對(duì)應(yīng)配置下的值捉邢,這樣就根據(jù)Scheme分別配置了相應(yīng)的設(shè)置脯丝。(正式環(huán)境、測試環(huán)境宠进、預(yù)發(fā)布環(huán)境可以根據(jù)這種方式完美解決)
4.多xconfig文件配置
cmd + n 創(chuàng)建Config文件,一般命名規(guī)則:文件夾名-Target名.Build Configuration秘案,后面會(huì)自動(dòng)帶上xcconfig
根據(jù)自己的Build Configurations創(chuàng)建,每種對(duì)應(yīng)一個(gè)阱高,并配置
如果是CocoaPods安裝過第三方的話赚导,Configurations下的Xconfig文件就會(huì)默認(rèn)配置成Cocoapods的Xconfig文件。因?yàn)镃ocoapods就是采用的這種配置管理方式赤惊。此時(shí)吼旧,就會(huì)有個(gè)尷尬的地方,無論怎么選都不能融合自己的文件和Cocoapods自動(dòng)生成的配置文件圈暗。繼承是個(gè)好東西掂为!嘎嘎!
我們在自己的Xconfig文件中员串,#include相應(yīng)的Pod下來的Xconfig文件,然后在Configurations中選中自己的文件寸齐,就可以擁有自定義和Pod的所有配置S怠!渺鹦!
5扰法,xcconfig的書寫規(guī)范
xcconfig是以鍵值對(duì)的形式出現(xiàn)的。
//雙斜杠是注釋毅厚,需要做一個(gè)轉(zhuǎn)義
定義 SLASH = /
HOST_URL = http:${SLASH}/www.xxx.com
否則代碼中獲取HOST_URL的時(shí)候,只能獲取到http:,后面的無法獲取!