通過cocoapod創(chuàng)建組件
很多時候我們會把項目中通用的功能模塊組件化,通過Cocoapods進行管理。本文將一步一步的記錄自己創(chuàng)建組件的過程。
創(chuàng)建組件
1、創(chuàng)建遠程索引庫
我們沒創(chuàng)建一個組建就會帶有一個后綴為.podspec的索引文件。我們可以創(chuàng)建一個遠程索引庫來保存他們,這樣其他人可以通過它來進行使用你的組件。按照下圖創(chuàng)建遠程索引庫(ZZFSpecs)并拿到遠程索引庫的地址(https://github.com/ZZFComponent/ZZFSpecs.git):

2、創(chuàng)建本地倉庫
本地索引倉庫相關(guān)知識
創(chuàng)建之前,我們想簡單介紹一下本地索引庫相關(guān)東西,如果以前沒有創(chuàng)建過本地索引倉庫,本地索引倉庫應該只有默認的master,所有的本地索引倉庫都會存放在下面目錄下,你可以去這里查看:
~/.cocoapods/repos
當然你也可以打開命令行輸入一下命令查看:
pod repo
也可以通過一下命令刪除本地索引庫
pod repo remove 《本地索引庫名稱
//舉例
pod repo remove ZZFSpecs
創(chuàng)建本地索引倉庫
好了,說了那么多,下面進入整體,創(chuàng)建索引庫,創(chuàng)建本地索引庫也是很簡單的,只需要下面一行命令搞定:
pod repo add <本地索引庫的名字> <遠程索引庫的地址>
//舉例
pod repo add ZZFSpecs https://github.com/ZZFComponent/ZZFSpecs.git
執(zhí)行完命令之后可以通過上面介紹的本地索引倉庫查看命令查看本地索引倉庫是否創(chuàng)建成功。
3、創(chuàng)建遠程組件代碼庫(ZZFShareKit)
遠程組件代碼庫的創(chuàng)建方式基本上和創(chuàng)建遠程索引庫一樣,創(chuàng)建后獲取到ZZFShareKit組件代碼庫的地址(https://github.com/ZZFComponent/ZZFShareKit.git),該庫存儲ZZFShareKit組件的代碼。
[圖片上傳失敗...(image-1610b-1520489978409)]

4、創(chuàng)建ZZFShareKit組件本地代碼庫
首先通過pod lib create命令從cocoapods的模版中初始化自己的本地組件代碼庫。
pod lib create 《組件名》
pod lib create ZZFShareKit
執(zhí)行完上面代碼后,會出現(xiàn)下面的提示信息

自己根據(jù)自己的需求做出選擇,完成后cocoapods會自動為我們創(chuàng)建本地組件代碼庫,并且?guī)臀覀兇蜷_項目,接下來就需要把我們需要組件話的代碼加入進來。如下圖所示將自己的代碼放入到組件ZZFShareKit/Classes/文件夾下,如下圖

進入到代碼庫下面的Example目錄下面執(zhí)行
pod install,把剛才拖入到classes、文件的文件pod進來。
如果組件庫里需要圖片資源,則需要首先進入組件的索引文件ZZFShareKit.podspec,將圖片的引入打開,默認是不打開的。默認的代碼如下:
# s.resource_bundles = {
# 'ZZFShareKit' => ['ZZFShareKit/Assets/*.png']
# }
將前面的注釋去掉
s.resource_bundles = {
'ZZFShareKit' => ['ZZFShareKit/Assets/*.png']
}
接下來將自己的圖片放入到ZZFShareKit/Assets文件夾下。
[圖片上傳失敗...(image-87d053-1520489978409)]
引入后同樣進入到Example目錄下面執(zhí)行pod install
然后進入到xcode,在‘Pods’ Project下面Development Pods/ZZFShareKit文件夾下就可以看到自己引入的代碼和圖片了,如下圖:
<div align=center>

然后編譯組件看是否能夠通過,并且在demo項目中可以寫一些代碼看看組件能不能正常使用。
接下來就需要修改索引文件ZZFShareKit.podspec了,首先固定要修改的有
- 版本號(version)
- 組件的見到描述(summary)和詳細說明(description)
- 修改主頁(homepage)和遠程代碼庫地址(source)
- 添加組件中的依賴庫(比方說你的組件中需要用到AFNetworking)
其他的諸如:development_target,frameworks等根據(jù)自己情況修改。
更改成功后編譯運行,如果沒問題就可以把組件提交到遠程并打tag,
**打tag的時候要注意,tag要和上面更改ZZFShareKit.podspec時的tag一致**
**打tag的時候要注意,tag要和上面更改ZZFShareKit.podspec時的tag一致**
接下來就是把組件代碼庫提交到遠程
- git add .
- git commit -m "組件初始化"
- git remote add origin 遠程代碼倉庫地址
- git push origin master
- git tag 版本號 (注:這里的版本號必須和podspec里寫的版本號一致)
- git push --tags
5、將組件的索引文件提交到遠程索引庫
首先我們要驗證索引文件的格式是否正確,是否符合cocoapods的要求,驗證命令:
pod spec lint 《組件索引文件》 --verbose --allow-warnings
//舉例
pod spec lint 《ZZFShareKit.podspec》 --verbose --allow-warnings //注:--allow-warnings是為了讓組件編譯過程中有warning照樣能夠通過。
驗證通過后我們就可以將我們組件的索引文件上傳到遠程索引庫里,命令:
pod repo push <本地索引庫> <索引文件名> --verbose --allow-warnings
//舉例
pod repo push ZZFSpecs ZZFShareKit.podspec --verbose --allow-warnings
這樣就把索引文件上傳到遠程索引庫和本地索引庫,自己可以去這兩個地方看下是否能夠找到。
以上就是組件化的全部過程,接下來就是如何使用自己創(chuàng)建的組件了。
組件使用
使用自己的組件
創(chuàng)建一個應用ZZFShareKitDemo,在項目文件夾創(chuàng)建Podfile,并且輸入一下代碼
source 'https://github.com/ZZFComponent/ZZFSpecs.git'
use_frameworks!
target 'ZZFShareKitDemo' do
pod 'ZZFShareKit'
end
注:
- source:指定索引文件地址,如果不指定,則自動引用cocoapods的索引文件庫:https://github.com/CocoaPods/Specs.git,因為我們的組件還沒有提交到cocoapods,所以索引庫必須指定。下面會講解怎么將自己的組件上傳到cocoapods
- use_frameworks!:這個字段是說組件會被編譯成framework使用,否則將會被編譯成library(.a)使用
將自己的組件上傳到cocoapods
想把自己的組件上傳到cocoapods,首先需要有一個cocoapods賬號,通過一下命令注冊:
pod trunk register 《郵箱地址》 《用戶名》 --description='描述信息'
然后根據(jù)命令行輸出可以看出自己是否注冊成功,如果成功的話會提示讓你去郵箱里確認進行激活。
注冊成功后,可以通過一下命令查看自己的信息:
pod trunk me
上傳到cocoapods之前還是先需要驗證索引文件的是否符合要求,和上面將索引文件提交到遠程庫一樣,使用命令pod spec lint 《ZZFShareKit.podspec》 --verbose --allow-warnings
驗證通過之后,就可以真正的將索引文件提交到cocoapods使用命令
pod trunk push 《索引文件路徑》 --allow-warnings
//舉例
pod trunk push ZZFShareKit.podspec --allow-warnings
上傳到cocoapods中的組件可以通過以下命令刪除
pod trunk delete 《組件名》《組件版本號》
上傳到cocoapods后,我們使用組件的時候就不需要在Podfile中通過source指定索引文件來使用組件了,只需要簡單的pod 《組件名》就可以了,如pod ZZFShareKit