尊重原創, 共同進步.
立意
不少公司開發的專案有面對多客戶/市場的需求, 然而基本功能完全一致的情況下, 可以考慮多Target開發, 減少開發和維護的人力成本.
考慮到目前業界的實際情況, 本文主要以Objective C為主要開發語言, Swift為後續加入的開發語言來做示例. 其它情況請自行參考.
流程
1. 建立
建立第一個專案FirstProduct, 如圖:
2. 新增Swift配置
新增Swift檔案, OC呼叫和基本的配置內容, 如圖:
初次執行結果如下:
3. 建立第二個Target
基本的思路就是"搬磚"(複製-貼上ORZ).
複製Target, 複製Schemes, 修改新專案的Bundle Indentifier:
複製圖片資源庫, 修改其內容及Target指向. 原資源庫僅指向First Target:
複製啟動頁, 修改其內容及Target指向. 原啟動頁僅指向First Target:
好了, 可以嘗試執行了.
結果肯定是失敗. XD
因為我們還沒有修改完.
4. 修改第二個Target的專案配置
目前Demo只做簡單的專案名稱替換, 更復雜的可以考慮使用User Defined Settings配置項及Configurations來做.
這樣就可以適配不同的語言, 甚至完成不同的打包需求了. 因其不在本文範圍內, 不做進一步擴充套件.
More...
你以為這就可以佛祖保佑, 永無Bug, 完美執行了?
只能說Too Young, too simple.
別忘了我們的專案是OC和Swift混編的, 而Swift是用Module進行模組系統劃分的. 至於專業解說, 請參考貓·仁波切的這篇文章
所以FirstProduct的Module, 在SecondProduct裡不一定能用, 我們需要稍微改造一下.
- 這個是FirstProduct原來的Swift.h引用
- 這個是SecondProduct修改的Swift.h引用
當然你也可以考慮不同的Target生成使用不同的Module檔案, 然後根據系統配置巨集來做更為複雜的配置功能.
不過本文就是個小Demo, 就不做這種高難度動作了.
結
終於可以執行了, 謝天謝地. 順便祝大家2018年開工大吉, 狗富貴, 勿相忘. 旺旺旺!