先說一下這里講的是本地庫,并不是私有庫遵馆,如果想了解
Cocoapods
公共庫或者私有庫的支持方法可以看我的另一篇文章:【iOS 開發(fā)】創(chuàng)建 podspec 文件,給自己寫的框架添加 CocoaPos 支持 敲街。最近公司項目需要以組件化的架構(gòu)來重構(gòu)項目,就是各個模塊需要解耦拆分開來严望,利用
Cocoapods
的管理多艇,主工程只需要將各個模塊pod install
引入即可,開始想要以私有庫的方式集成像吻,但是公司項目涉及到多個客戶定制開發(fā)峻黍,定制分支比較多,如果用私有庫方式必定要創(chuàng)建多個Git
倉庫分開管理拨匆,這樣分支管理以及維護成本都大大提高姆涩,所以考慮采用本地庫的方式將各個模塊集成,好處是各個模塊的庫不需要打tag
上傳至私有庫惭每,可以在主工程直接管理各個模塊的代碼骨饿,下面就記錄一下遇到的問題。
至于如何給自己的模塊代碼添加 Cocoapods
支持我這邊就不說了台腥,不會的看上面貼出來的另一篇文章即可宏赘。
假設(shè)
我的項目工程一共分為以下幾個組件:
- 測試主工程 (
TestProject
) - 測試組件1 (
TestModule1
) - 測試組件2 (
TestModule2
)
然后 測試主工程
需要依賴 測試組件1
,而 測試組件1
又需要依賴 測試組件2
黎侈,兩個組件都是以本地庫方式依賴察署,所以這里就涉及到 Cocoapods
本地庫依賴本地庫,因為是本地庫并沒有上傳峻汉,所以在 podspec
中依賴時會出現(xiàn)找不到庫的情況贴汪,下面就來說一下解決方法脐往。
相互依賴的方法
測試組件2
由于 測試組件2
并不需要任何依賴,所以 podspec
如下:
Pod::Spec.new do |s|
s.name = 'TestModule2'
s.version = '1.0.0'
s.summary = '測試組件2'
s.homepage = 'xxx'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Jonzzs' => 'xxx' }
s.source = { :git => '', :tag => s.version }
s.platform = :ios
s.ios.deployment_target = '9.0'
s.swift_version = '4.2'
s.source_files = 'TestModule2/*.swift'
end
測試組件1
由于 測試組件1
需要依賴 測試組件2
扳埂,所以需要添加 s.dependency
依賴业簿, podspec
如下:
Pod::Spec.new do |s|
s.name = 'TestModule1'
s.version = '1.0.0'
s.summary = '測試組件1'
s.homepage = 'xxx'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Jonzzs' => 'xxx' }
s.source = { :git => '', :tag => s.version }
s.platform = :ios
s.ios.deployment_target = '9.0'
s.swift_version = '4.2'
s.source_files = 'TestModule1/*.swift'
s.dependency 'TestModule2' # 這里需要依賴測試組件2
end
測試主工程
當(dāng)測試主工程在 podfile
集成 測試組件1
和 測試組件2
時,一般來說聂喇,因為 TestModule1
已經(jīng)在 podspec
中 s.dependency
依賴了 TestModule2
辖源,所以直接 pod 'TestModule1'
應(yīng)該就會自動把 TestModule2
也 pod
下來,但是因為兩個組件都是本地庫希太,所以 cocoapods
會找不到 TestModule2
這個本地庫克饶,這時候只要在 podfile
中將 TestModule2
也指明本地地址即可,podfile
如下:
platform :ios, '9.0'
target 'TestProject' do
use_frameworks!
pod 'TestModule1', :path =>'../TestModule1/'
pod 'TestModule2', :path =>'../TestModule2/'
end
這里將 TestModule2
的地址也指明誊辉,pod 'TestModule1'
時就不會出現(xiàn)找不到依賴的情況矾湃。
將來的你,一定會感激現(xiàn)在拼命的自己堕澄,愿自己與讀者的開發(fā)之路無限美好邀跃。