Workspace、Scheme、Project、Target、Build Settings
workspace 它多含所有文件,可以有多個(gè)Project和其他文檔文件。
project 就是一個(gè)個(gè)的倉(cāng)庫(kù),里面包含屬于這個(gè)項(xiàng)目的所有文件,資源,以及生成一個(gè)或者多個(gè)軟件產(chǎn)品的信息。每個(gè) project 會(huì)包含一個(gè)或者多個(gè) targets,而每一個(gè) target 告訴如何生成 products。project 會(huì)為所有 targets 定義默認(rèn)的 build settings,每個(gè) target 也能自定義自己的 build settings,且 target 的 build setting 會(huì)重寫 project 的 build settings。
Xcode Project 文件會(huì)包含以下信息,對(duì)資源文件的引用(源碼.h和.m文件,frame,資源文件plist,bundle文件等,圖片文件image.xcassets還有Interface Builder(nib),storyboard文件)、文件結(jié)構(gòu)導(dǎo)航中用來(lái)組織源文件的組、Project-level build configurations(Debug\Release)、Targets、可執(zhí)行環(huán)境,該環(huán)境用于調(diào)試或者測(cè)試程序。
target 會(huì)有且唯一生成一個(gè) product,它將構(gòu)建該 product 所需的文件和處理這些文件所需的指令整合進(jìn) build system中。
projects 會(huì)包含一個(gè)或者多個(gè) targets,每個(gè) target 將會(huì)產(chǎn)生一個(gè) product。
每個(gè) target 中的 build setting 參數(shù)繼承自 build settings,一旦在 tagrget 中修改任意 settings 來(lái)重寫 project settings,那么最終生效的 settings 參數(shù)以在最終生效的 settings 參數(shù)以在 target 中設(shè)置的為準(zhǔn)。
項(xiàng)目中使用多個(gè) tagert
這次在需求中有一個(gè)馬甲包的需求。

在開始馬甲包時(shí),一開始準(zhǔn)備使用創(chuàng)建新的 Scheme,后來(lái)發(fā)現(xiàn)馬甲包中某些 view 也變了,不僅僅是 icon 和 啟動(dòng)圖等了。就考慮到在 project 中使用 多個(gè) target。
第一種方法就是復(fù)制一個(gè)原有的 Targets,與原來(lái)的工程是一模一樣。
第二種方法創(chuàng)建的是一個(gè)新的 Targets,里面所有的文件都更改了。包括 plist文件,源代碼,Build Settings...所有參數(shù)都可以改。
在這次需求中,馬甲包中只有部分圖片,icon,啟動(dòng)圖等一些布局圖片改變了,并沒有改變里面一些邏輯。所以選擇第一種方法復(fù)制一個(gè)原有一樣的工程。
在復(fù)制創(chuàng)建新的 Target 時(shí),自動(dòng)創(chuàng)建新的 Plist 文件。scheme,和 plist ,target 名字都是以 源工程名+copy 來(lái)命名,自行更改。
在老員工的要求下盡量少改原工程的代碼,和為以后可能需求另外一個(gè)馬甲包做準(zhǔn)備。
創(chuàng)建一個(gè)新的 Config 文件來(lái)進(jìn)行多 Target 編譯。


通過 Target -> Build Setting 來(lái)

所有圖片調(diào)用以下方法創(chuàng)建
改變啟動(dòng)圖,icon等,改變 Target 中 icon,啟動(dòng)圖路徑即可。
對(duì)于 podfile 文件?
target"target-copy"do
end
參考: