隨着工程體量的增大,開發人員增多,爲了更好的合做開發,經常咱們須要對大工程進行拆分紅一個個小工程,這樣作有幾點好處:ios
下面咱們就經過pod來建立一個子工程並經過pod在主工程來引入git
Xcode
新建一個工程例如叫HomeModule
HomeModuleDemo
的工程Classes
的文件夾,將須要導出的代碼類都放在這個文件夾下,創建一個Resources
文件夾,將須要導出的資源文件放在這個目錄下pod spec create HomeModule
,這段命令會在目錄下生成HomeModule.podspec
文件,這個文件其實就是對這個工程的描述,例如工程名稱、託管地址、須要導出哪些文件等下面是進行到這一步的目錄示例圖github
好了,如今能夠先將這個項目託管到線上git倉庫bash
打開HomeModule.podspec
作一些編輯,下面是一些經常使用配置的編輯app
Pod::Spec.new do |s|
s.name = "HomeModule"
s.version = "0.0.1"
s.summary = "HomeModule is a ...."
s.homepage = "https://github.com/xxx"
s.license = "MIT"
s.author = {
"xxx" => "xxx@gmail.com",
}
s.source = { :git => "https://github.com/xxx/HomeModule.git", :tag => "#{s.version}" }
s.source_files = "Classes/*.{h,m}"
s.resources = "Resources/*.png"
s.requires_arc = true
s.ios.deployment_target = "7.0"
s.osx.deployment_target = "10.9"
s.watchos.deployment_target = "2.0"
s.tvos.deployment_target = "9.0"
s.frameworks = 'UIKit'
s.dependency 'Masonry', '~> 0.6.2'
end
複製代碼
值得關注的是下面幾個點工具
s.source
是項目託管地址s.source_files
須要導出的文件,就是最終其它工程經過pod引入你這個項目時的文件,這裏就體現了pod的好處,咱們開發組件時能夠是個完整的iOS工程,可單獨開發運行調試,經過pod給別人用時就只須要導出核心的那些文件就好了s.resources
須要導出的資源文件s.source_files = "Classes/**/*.{h.m}"
s.resources做一樣的寫法s.frameworks
你依賴的系統庫s.dependency
你依賴的其它第三方pod庫這個倉庫主要用來託管咱們本身的podspec文件,就是本例中的HomeModule.podspec
,例如之後的ShopCartModule.podspec
等等...gitlab
Cocoapods
的官方spec倉庫是https://github.com/CocoaPods/Specs
,不少咱們經常使用的第三方庫例如AFNetworking的podspec文件就託管在這個倉庫裏面,在咱們第一次使用cocoapods的時候就會將這個倉庫克隆到本地的user/xxx/.cocoadpos/repos/master
,你可進入這個目錄看看,就會發現每一個庫的每一個版本的podspec文件都在裏面,當咱們經過pod search
搜索第三發庫的時候,實際就是在搜索這個目錄。有些時候一些第三方庫已經發布新版本了,但咱們搜索到的仍是老版本,就是由於這個庫沒有更新。ui
下圖爲克隆到本地的Cocoapods官方Specs倉庫: url
pod repo list
咱們能夠看到本地有哪些spec倉庫,以及倉庫的url和本地地址信息等,以下圖中是Cocoapods官方Spec倉庫,名爲master
master
- Type: git (master)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/geforceyu/.cocoapods/repos/master
複製代碼
順便提一下,不少同窗會知道pod update
和pod setup
都很是慢,這兩個命令都會更新這個倉庫,你們能夠將master倉庫的url切換爲清華大學的cocoapods官方spec鏡像源,具體詳見清華大學軟件源spa
好了,瞭解完官方spec倉庫後,咱們能夠開始建立本身的spec倉庫了。
.cocoapod/repos/xxxPodSpecs
,固然這裏使用pod命令行工具來執行,pod repo add xxxPodSpecs https://github/xxx/xxxPodSpecs.git
,執行完成後再執行pod repo list
就能夠看到咱們私有的spec倉庫在列了。pod repo push xxxPodSpecs HomeModule.podspec
,這裏pod會執行一次校驗,通常會報一些warn,你能夠去解決一下,若是不想解決直接忽略的話,執行pod repo push xxxPodSpecs HomeModule.podspec --allow-warnings
,不過若是是error錯誤,是沒法忽略的。這裏順便提一下,在我使用1.5.3版本pod執行的時候,會報一個error是bug引發的,沒法解決,經過升級到最新版pod就行了,升級pod只須要執行sudo gem install cocoapods
就好了。若是你想多個pod切換使用,請參考這篇文章多個版本的 CocoaPods 的切換podfile
文件,在頭部添加兩行source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/xxx/xxxPodSpecs.git'
複製代碼
在後面就能夠添加pod引用HomeMoudle了
pod 'HomeModule', '0.0.1'
複製代碼
能夠看到一個是官方specs倉庫,一個是咱們私有spec倉庫,由於咱們本身的HomeModule.podspec
文件是託管到私有的xxxPodSpecs倉庫的,若是不添加咱們本身的私有spec倉庫源,那麼pod install
的時候是在官方spec倉庫搜索HomeModule.podspec的。
當咱們繼續爲子工程HomeModule開發新的功能後,咱們須要更新咱們的版本,具體操做以下
pod repo push xxxPodSpecs HomeModule.podspec --allow-warnings
podfile
更新爲pod 'HomeModule', '0.0.2'
複製代碼
pod install
一般咱們會經過一個demo工程來給他人演示庫的一些用法,首先咱們須要將demo工程經過pod集成咱們的HomeMoudle
cd
到HomeModuleDemo
目錄,執行pod init
建立一個podfile
。編輯podfile
文件添加HomeModuel
引入target 'HomeModuleDemo' do
pod 'HomeModule', :path => '../'
end
複製代碼
這裏咱們經過:path => '../'
直接指向本地的HomeModule.spec
地址便可。
pod install
HomeMoudleDemo.xcworkspace
,開始編寫示例代碼。好了,大體的操做步驟就這些,文章中哪些地方不夠詳細或者錯誤的,歡迎各位看官指正出來,謝謝🙏