寫這篇文章的主要目的是方便自己查閱...如果恰好能夠幫到你那就太好了!
按照下面的步驟操作後,最終的結果應該是:在任何一個iOS項目中都可以使用CocoaPods安裝使用提交的組件庫。
接下來就以名爲“TRectDetector”的組件爲例:
一、準備代碼和資源文件
準備需要提交的代碼和圖片資源,在實際操作中注意2點:
1、若提交的代碼中引用了其他的CocoaPods庫,把import <> 改成 import "",例如:import <Masnory.h>改成import "Masnory.h"
2、代碼和圖片資源最好都添加特有的前綴,避免其他項目引入時出現同名文件衝突
二、創建組件工程
1、創建組件工程
cd ~/Desktop
mkdir TRectDetector #創建一個文件夾
cd TRectDetector/
pod lib create TRectDetector #pod lib create 組件名
執行命名後,按照提示完成工程的創建,創建完成後會自動打開此工程
注:爲了不混淆名稱,都使用TRectDetector
2、導入組件代碼
將準備好的代碼和圖片資源分別放入Classes和Assets目錄下
三、創建github倉庫
登錄github並創建一個名爲TRectDetector的倉庫,拷貝地址:https://github.com/RainyMask/TRectDetector.git
注意不用勾選生成README文件,因爲我們創建的組件工程中有README文件
四、配置組件的.podspec文件
找到組件工程的.podspec文件,修改相關的配置項:
s.version 版本號
s.summary 摘要
s.homepage 這裏填寫自己github的主頁地址
s.source 填寫創建的github倉庫地址
s.source_files 代碼位置
s.resource_bundles / s.resources 靜態資源位置
s.dependency 依賴的其他CocoaPods庫
s.subspec 子庫(s.subspec '子庫’名稱 do |別名|),使用時 pod "TRectDetector/Child"
s.subspec 'Child' do |c|
c.source_files = ''
c.dependency 'AFNetworking'
end
五、導入組件代碼並運行Example項目
在Example目錄下執行 pod install 命令,可導入組件代碼如圖所示,注意此時Podfile中並沒有使用use_frameworks!。
OC項目中一般不使用use_frameworks!,如果使用swift或者dynamic frameworks才添加這行
導入組件代碼之後,我們就可以對組件寫一些測試代碼或者做一個演示的demo。
六、提交代碼到github倉庫並設置tag
#cd到工程根目錄下
git add .
git commit -m '創建組件'
git remote add origin https://github.com/RainyMask/TRectDetector.git
git push -u origin master -f # 後續提交直接使用git push就可以
#到此代碼已經提交到github的master分支上了,接下來創建tag
git tag '0.1.0'
git push origin --tags
注意這裏設置的tag需和.podspec文件中配置的s.version的值保持一致
這裏插入一點git tag的常見用法:
git tag '0.1.0' / git tag -a '1.0.0 -m '第一版' #創建tag
git tag #查看tag
git show 0.1.0 #查看分支備註信息
git push origin —tags #將本地tag提交到遠程倉庫
git fetch origin tag 0.1.0 #獲取tag對應的版本
git tag -d 0.1.0 #刪除本地tag
git push origin :refs/tags/0.1.0 #覆蓋遠程的tag,順序執行這兩步可實現刪除tag的效果
七、兩個驗證命令
對代碼進行驗證,確保無誤後再上傳。如果驗證通過會提示 passed validation,不通過則需要根據錯誤提示進行修改,然後更新代碼和tag。
#驗證代碼的正確性:
#pod lib lint 用於驗證本地的代碼
#pod spec lint 對本地和遠程代碼都驗證
#<組件名>.podspec 如果在項目根目錄下執行不需要添加此參數
#--verbose 顯示詳細錯誤原因
#--use-libraries 使用靜態庫或者是framework
#--allow-warnings 允許警告存在
#cd到項目根目錄下
pod lib lint --use-libraries --allow-warnings
pod spec lint --use-libraries --allow-warnings
#驗證時間較長,需等待一會兒
八、上傳至公共索引庫
終端執行命令 pod trunk me,若未註冊執行註冊命令:
# pod trunk register 郵箱 '用戶名' --description='描述'
# 這裏的郵箱和用戶名使用github的即可
pod trunk register [email protected] 'tt'
# 執行命令後 查收郵件,點擊或者複製鏈接打開即可
pod trunk me #此時可以看到已註冊信息
# cd到項目根目錄下,執行上傳操作
pod trunk push --use-libraries --allow-warnings
# 成功後使用pod search 查找確認上傳成功
# 如果搜索不到或者報錯,執行 pod repo update 或者 執行 rm ~/Library/Caches/CocoaPods/search_index.json 刪除.json文件再進行搜索
pod repo update
pod search TRectDetector
至此,創建一個新的iOS項目,在Podfile中添加一行 pod 'TRectDetector' 然後執行 pod install 就能使用了。
========================================== 分割線 ======================================
進行完第八步,我們的組件就可以通過CocoaPods集成到項目裏面了。但是這個組件是對所有人都公開的,如果其中包含一些敏感信息或者只想在公司內部使用,並不想公開,那麼可以嘗試下面的辦法奧(我並沒有試過)
所以我們現在的問題就是,怎麼創建一個私有的組件,並且可以通過CocoaPods進行管理:
1、還是按照上面的1-7步,唯一區別在於我們不會把代碼提交到CocoaPods的公共索引庫裏。
# 打開資源管理器
open ~/.cocoapods/repos
這裏的master就是CocoaPods默認的索引倉庫,它關聯的遠程索引倉庫地址爲:https://github.com/CocoaPods/Specs.git
接下來我們創建一個私有的索引庫,就取名爲MySpec吧
2、創建私有索引庫
還是在github上創建一個git倉庫吧,複製地址:https://github.com/RainyMask/MySpec.git
3、創建本地索引庫並關聯
# 執行命令
cd ~/.cocoapods/repos
pod repo add MySpec https://github.com/RainyMask/MySpec.git
這時候repos目錄下會多出一個MySpec目錄
cd到工程目錄下,執行命令
# cd 到工程目錄下執行
pod repo push MySpec --use-libraries --allow-warnings
命令成功執行後,可以看到MySpec目錄下已經有內容了
4、使用
當然,像我這樣已經將組件提交到公共索引庫中去了,在pod install 時會有警告信息提示重複存在了
然後,針對use_frameworks和圖片資源的加載問題,我另起一篇文章做爲記錄。