多Target、元件化實踐
前言
因為公司專案的特性:每個城市對應一個APP,每個APP又有著或多或少的區別;
所以開發人員面臨的問題是:開發多個相似APP。
解決方案
先說一下之前的解決方案:
將所有APP整合為一個大的專案,通過修改配置檔案,呼叫不同APP所需程式碼。
這樣確實是解決了問題,但是方案肯定是不好的。
這樣做的缺點:
- 任何一個APP都需要載入所有APP的檔案,資源
- 每次檢視不同城市的APP都需要修改配置檔案,同時還要修改伺服器地址,很容易發生遺漏
- 所有APP的icon,名稱無法單獨設定
下面是本文的解決方案:
-
通過Target管理不同城市的APP
-
通過cocoapods私有庫將專案元件化
大家可使用cocoapods私有庫製作指令碼進行私有庫製作。更多cocoapods私有庫製作請點選。
不同的Target匯入不同的cocoapods私有倉庫
project 'SXC.xcodeproj'
platform :ios, '8.0'
use_frameworks!
pod 'QCRouter', :path => '../QCRouter'
target 'SXC_GX' do
# Pods for SXC-GX
pod 'SSQ/GX', :path => '../SSQ'
end
target 'SXC_HLJ' do
# Pods for SXC-HLJ
pod 'SSQ/HLJ', :path => '../SSQ'
end
target 'SXC_NX' do
# Pods for SXC-NX
pod 'SSQ/NX', :path => '../SSQ'
end
target 'SXC_TJ' do
# Pods for SXC-TJ
pod 'SSQ/TJ', :path => '../SSQ'
end
target 'SXC_ZJ' do
# Pods for SXC-ZJ
pod 'SSQ/ZJ', :path => '../SSQ'
end
注意事項
-
多Target使用預定義巨集問題
由於本專案為Swift專案,所以如下使用預定義巨集
#if SXC_TJ let scheme = "sxc-tj" #elseif SXC_NX let scheme = "sxc-nx" #elseif SXC_GX let scheme = "sxc-gx" #elseif SXC_HLJ let scheme = "sxc-hlj" #elseif SXC_ZJ let scheme = "sxc-zj" #else let scheme = "" #endif
元件化的話,使用了自己開發的QCRouter來進行解耦,思路不知道對不對,大家有什麼好的建議可以提一下。
-
建立類的時候要注意選擇正確的Target
本文demo地址
參考文章
相關文章
- iOS元件化實踐iOS元件化
- iOS 元件化實踐思考iOS元件化
- 元件化工具BeeHive(二):元件化實踐元件化Hive
- Android 元件化最佳實踐Android元件化
- 元件化實踐詳解(一)元件化
- 元件化實踐詳解(二)元件化
- 聚美元件化實踐之路元件化
- 前端元件化開發實踐前端元件化
- "rman target /” 和"rman nocatalog target /”區別實踐
- Android元件化探索與實踐Android元件化
- Android元件化最佳實踐-ARetrofitAndroid元件化
- iOS 解藕、元件化最佳實踐iOS元件化
- Android元件化開發實踐Android元件化
- iOS 元件化/模組化架構設計實踐iOS元件化架構
- Android 元件化最佳實踐 ARetrofit 原理Android元件化
- Android元件化實踐專案分享Android元件化
- Android徹底元件化方案實踐Android元件化
- iOS 元件化實踐方案-LDBusMediator 煉就iOS元件化
- 前端多專案模組化實踐前端
- 移動端APP元件化架構實踐APP元件化架構
- 蜂鳥商家版 iOS 元件化 / 模組化實踐總結iOS元件化
- iOS 配置多targetiOS
- Android客戶端專案元件化實踐Android客戶端元件化
- Android元件化開發實踐和案例分享Android元件化
- CC框架實踐(2):Fragment和View的元件化框架FragmentView元件化
- vue-cli多頁面應用實踐,實現元件預覽Vue元件
- Android元件化開發實踐(一):為什麼要進行元件化開發?Android元件化
- 基於 MVP 的 Android 元件化開發框架實踐MVPAndroid元件化框架
- 基於CocoaPods的元件化原理及私有庫實踐元件化
- 尚妝達人店 UI 元件化 工程實踐(weex vue)UI元件化Vue
- React高階元件實踐React元件
- Android 基於註解IOC元件化/模組化的架構實踐Android元件化架構
- 多容器動態化方案在遊戲SDK中的實踐遊戲
- 雲音樂前端國際化多語言探索實踐前端
- JMeter元件作用域實踐指南JMeter元件
- webpack多頁面實踐Web
- Flutter多語言實踐Flutter
- Python 多程式實踐Python