當多個APP項目功能差不多一樣,且大多數代碼、文件、資源可共用時,就可以在一個項目中通過設置不同的target進行開發。
設置步驟:
1、創建Target
2、Assets.xcassets的設置(app圖片、launch啓動頁),務必勾選對應的target
3、配置Info.plist 修改應用名稱、包名、版本號、證書、描述文件等
4、修改Xcode左上角的Target名稱
5、 橋接文件pch設置
6、宏定義(Preprocessor Macros)設置
7、pod管理配置
一、創建Target
- 新建項目,命名爲 Teacher:
- 文件結構細化,區分系統文件,新建三個新文件夾,用於區分存放三個不同targer
- 複製target,通過對原有的target做duplicate(duplicate only),複製一份。
如果兩個target的相同點很多,用duplicate,就可以把相關的設置全部拷貝過來,而不需要做 過多的修改,生成一個新的target。 - 複製完可以看到出現了兩個東西: 一個是target,一個是info.plist文件。名字可改爲我們想要的。
- 同理 重複操作完成另一個target的複製,最終效果見下圖。
二、Assets.xcassets的設置(app圖片、launch啓動頁),務必勾選對應的target
給不同target創建各自的Assets.xcassets文件和info.plist文件:
- 新建Assets :
- 選擇對應的target
這裏一定要注意 選擇對應的target 選擇對應的target 選擇對應的target 不要選錯了 !!!! - 重複操作完成另一個target的Assets配置,最終效果見下圖。
- 對應的Assest文件中設置不同的圖標和啓動頁:
三、配置Info.plist 修改應用名稱、包名、版本號、證書、描述文件等
此時 運行app肯定會報錯,因爲 info.plist文件改了路徑,另外兩個info.plist也還沒有設置。
- 選中teacher的target - Build-Settings - 搜索info.plist
- 替換新的路徑:
- 運行
測試是否配置合適 Xcode左上角選中那個target 就是運行對應的項目 另外的info.plist文件對它也不會有影響。
- 同理完成 另外兩個target的 info.plist路徑配置
一定要注意target是否對應是那個 重點看下圖的 “1” 它就代表着當前選中的target - 修改不同的target的包名、BundleID等
四、修改Xcode左上角的Target名稱
- 選中Xcode左上角的創建工程時的Target,選擇Manage schemes
- 編輯
五、 橋接文件pch設置
- 新建pch文件:
- pch路徑配置
- pch 文件可以做一些不同target文件下的區分
裏面的AppType 怎麼來的? 幹嘛的? 請看下一步!
六、宏定義(Preprocessor Macros)設置
由於多個target使用同個文件時,存在一定的差異,在代碼中可以實現根據不同宏執行不一樣的代碼,使其與pch文件協作區別target。
具體步驟與前文類似
- 選中debug處,單擊該行右邊空白處,會彈窗,在點擊窗口左下角的“+”添加新項。
- release操作一樣,如下圖完成新Target的設置
這樣 上述pch文件就會起作用。
七、 pod管理配置
因爲存在多個Target,我們需要區別的設置不同target需要的第三方庫,如下圖。這裏可能出現的問題是如果有很多類似SDWebImage這樣的被多個Target需要的類庫,我們在刪除和增加的時候就會頻繁的操作而且會代碼冗餘。
最終效果: