多工程架構(gòu)熊杨,是由多個Project包裹在一個Workspace里面的一種架構(gòu)肿轨。其主要目的是為將不同的功能分割開荡碾,由不同人員進行開發(fā)與維護。
這里的多個project可以由MainProject(主項目)均践,PartProject(功能項目晤锹,可多個),NetworkManager彤委,Extension等組成鞭铆。
一、創(chuàng)建Workspace
創(chuàng)建Workspace焦影,作為最外層的包裹體來管理工程车遂。
將創(chuàng)建好的Workspace放到創(chuàng)建好的文件里面
二、創(chuàng)建MainProject
創(chuàng)建MainProject作為主工程斯辰,可在此基礎(chǔ)上開發(fā)APP的主要功能(TabBar舶担,Naviga等)
這一步要注意兩點:
1、注意創(chuàng)建的Project要選擇APP模塊
2彬呻、要放到對應(yīng)的Workspace里面(最后一張圖紅色框的地方)
到這里其實一個正常的工程是創(chuàng)建完成了衣陶,可以在里面正常寫項目之類的了回梧。接下來的其實就是對原本在MainProject里面的模塊進行抽離。
1祖搓、如果想把項目中的一個Person模塊分離開來,可以跟上一步一樣使用File => New => Project => APP湖苞,這樣就可以新分離一個Person模塊給其他同事開發(fā)拯欧,這樣既不會相互干擾,而且運行的時候只要運行自己的Targets就行了(怎么把MainProject和Person模塊銜接起來财骨,后面再說)镐作。如果是獨立開發(fā)或者項目不大,可以直接在MainProject開發(fā)隆箩,省掉這一步
2该贾、如果是網(wǎng)絡(luò)請求之類的共同功能可以使用framework模塊
三、Framework創(chuàng)建
這個跟上面的MainProject創(chuàng)建相似捌臊,只不過后面的APP換成Framework選項
這里同樣要注意存儲位置杨蛋,是在Workspace里面的
這個是加完了NetworkManager(framework),MainProject理澎,Person之后的結(jié)構(gòu)圖逞力。本來NetworkManager里面有個.h文件的,由于我是swift開發(fā)糠爬,所以把它刪了寇荧,新增了個NetworkManager.swift?
接下來把MainProject、Person一起跟NetworkManager進行鏈接
四执隧、鏈接framework
選擇你需要鏈接的Target揩抡,Build Phase => Link Binary With Libraries => + => 你的framework(NetworkManager)
選擇你需要鏈接的Target,Build Settings => 搜索header search => 輸入$(SRCROOT)/../NetworkManager
在對應(yīng)的文件導(dǎo)入NetworkManager就可以用了镀琉,這里的lg()是我在NetworkManger.swift實現(xiàn)的func峦嗤,這里記得要給NetworkManager這個Class設(shè)置Public屬性,func也是要Public滚粟。
五寻仗、Pod管理設(shè)置
關(guān)于Pod管理我就直接發(fā)代碼了,多工程管理的Pod庫是哪個工程需要哪個第三方凡壤,就導(dǎo)入那個Pod署尤。要注意的是,如果是在Framework中導(dǎo)入Pod的話亚侠,是所有引用這個Framework的Project都可以用曹体,所以要避免重復(fù)調(diào)用。
use_frameworks!?
source 'https://github.com/CocoaPods/Specs.git'
workspace 'MVVMAndRAC_Swift.xcworkspace'
target :'MainProject' do
platform :ios,'10.0'
project 'MainProject/MainProject.xcodeproj'
pod'SnapKit',? ? ? ? ? ? ? ? '~> 4.0.1'
end
target'Person'do
platform :ios,'10.0'
project 'Person/Person.xcodeproj'
pod 'Kingfisher',? ? ? ? ? ? ? ? '~> 5.2.0'
end
target 'NetworkManager' do
? platform :ios,'10.0'
? project'NetworkManager/NetworkManager.xcodeproj'
? pod'Moya/RxSwift',? ? ? ? ? '~> 14.0'
? end
然后pod install就可以了
end