iOS組件化-上傳組件至CocoaPods

寫這篇文章的主要目的是方便自己查閱...如果恰好能夠幫到你那就太好了!

按照下面的步驟操作後,最終的結果應該是:在任何一個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和圖片資源的加載問題,我另起一篇文章做爲記錄。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章