手把手教你釋出自己的cocoapods開源庫

weixin_33728268發表於2017-08-01

釋出自己的cocoapods開源庫按照以下步驟,良心製作,包教包會!!

下面我會通過一個名為IFMMenu的專案來講解一下整個過程。

1.寫好程式碼,上傳到github

github上建立專案倉庫的時候記得建立LICENSE(許可證/授權)檔案,此檔案必須要有。

953487-d9586f719509d84d.png
github上建立專案倉庫

2.將自己的專案打成tag

因為cocoapods是依賴tag版本的,所以必須打tag,以後再次更新只需要把你的專案打一個tag,然後修改.podspec檔案中的版本接著提交到cocoapods官方就可以了,提交命令請看下面

//為git打tag, 第一次需要在前面加一個v

git tag "v1.0.0"  
git push --tags

3.註冊CocoaPods

trunk需要CocoaPods 0.33版本以上,用pod --version命令檢視版本,如果版本低,需要升級。

pod --version

//版本低於0.33
sudo gen install cocoapods
pod setup

已經註冊過的不需要註冊,怎麼看自己有沒有註冊

pod trunk me
953487-2964c11186659814.png
pod trunk me資訊

若未註冊,執行以下命令,郵箱以及使用者名稱請對號入座。使用者名稱我使用的是Github上的使用者名稱。

// 加上--verbose可以輸出詳細錯誤資訊,方便出錯時檢視。
pod trunk register example@example.com 'liugangios'  --verbose

註冊完成之後會給你的郵箱發個郵件,進入郵箱郵件裡面有個連結,需要點選確認一下。
註冊完成後使用pod trunk me檢驗註冊是否成功。

4.建立.podspec

cd到你專案的目錄,執行命令

pod spec create IFMMenu

5.編輯.podspec

建立好後,開啟.podspec,刪除註釋, 前面有#的為註釋,也可以用以下程式碼替換,然後編輯自己的庫資訊。

Pod::Spec.new do |s|
s.name        = 'IFMMenu'
s.version     = '1.0.2'
s.authors     = { 'liugangios' => 'example@example.com' }
s.homepage    = 'https://github.com/liugangios/IFMMenu'
s.summary     = 'a dropdown menu for ios like wechat homepage.'
s.source      = { :git => 'https://github.com/liugangios/IFMMenu.git',
:tag => s.version.to_s }
s.license     = { :type => "MIT", :file => "LICENSE" }

s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'IFMMenu'
s.public_header_files = 'IFMMenu/*.h'

s.ios.deployment_target = '7.0'
end
  • s.name:名稱,pod search搜尋的關鍵詞,注意這裡一定要和.podspec的名稱一樣,否則報錯
  • s.version:版本號,to_s:返回一個字串
  • s.author:作者
  • s.homepage:專案主頁地址
  • s.summary: 專案簡介
  • s.source:專案原始碼所在地址
  • s.license:許可證
  • s.platform:專案支援平臺
  • s.requires_arc: 是否支援ARC
  • s.source_files:需要包含的原始檔
  • s.public_header_files:需要包含的標頭檔案
  • s.ios.deployment_target:支援的pod最低版本

其他一些非必要欄位

  • s.social_media_url:社交網址
  • s.resources:資原始檔
  • s.dependency:依賴庫,不能依賴未釋出的庫

s.license= { :type => "MIT", :file => "LICENSE" }
這裡建議這樣寫,如果寫別的會報警告,導致後面一直提交失敗。

source_files寫法及含義

"IFMMenu/*
"IFMMenu/IFMMenu/*.{h,m}"
"IFMMenu/**/*.h"

*表示匹配所有檔案
*.{h,m}表示匹配所有以.h.m結尾的檔案
**表示匹配所有子目錄

s.source常見寫法

s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :commit => "68defea" }
s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :tag => 1.0.0 }
s.source = { :git => "https://github.com/liugangios/IFMMenu.git", :tag => s.version }
  • commit => "68defea" 表示將這個Pod版本與Git倉庫中某個commit繫結
  • tag => 1.0.0表示將這個Pod版本與Git倉庫中某個版本的comit繫結
  • tag => s.version表示將這個Pod版本與Git倉庫中相同版本的comit繫結

6.驗證.podspec

到此檢查一下你工程中有以下檔案:

  • 你的專案,
  • .podspec檔案,
  • LICENSE檔案
953487-54026ea978fe18ab.png
專案內檔案

使用以下命令測試本地.podspec檔案是否存在語法錯誤。

pod spec lint IFMMenu.podspec --verbose

7.釋出

pod trunk push IFMMenu.podspec

時間較長,耐性等待,大概5-10分鐘,釋出成功後會有以下提示

953487-e3c7a5148b9875f4.png
釋出成功截圖

8.測試自己的cocoapods

這個時候使用pod search搜尋的話會提示搜尋不到,可以執行以下命令更新本地search_index.json檔案

rm ~/Library/Caches/CocoaPods/search_index.json

然後

pod search IFMMenu

該命令會重新建立search_index.json檔案,5-10分鐘,耐性等待

953487-4e282baf16796cfc.png
搜尋結果

完整命令

git tag "v1.0.0"
git push --tags 

pod trunk register example@example.com 'liugangios'  --verbose
pod trunk me
pod spec create IFMMenu

//編輯 IFMMenu.podspec

pod spec lint IFMMenu.podspec
pod trunk push IFMMenu.podspec 
rm ~/Library/Caches/CocoaPods/search_index.json
pod search IFMMenu

報錯處理

[!] Unable to accept duplicate entry for: XXXXX (1.0.0)

意思是:不能接受同一版本的提交

解決方案:
1、執行如下命令

git tag 1.0.1
git push --tags

2、修改XXXX.podspec檔案中的內容

  s.version      = "1.0.1"
  s.source       = { :Git => "https://github.com/xxx/xxx.git", :tag => "1.0.1" }

3、執行命令pod spec lintpod trunk push 庫名.podspec驗證並提交到CocoPods

最後

IFMMenu是一個仿微信首頁新增選單的多功能、多種屬性可自定義的下拉選單,歡迎download下載提意見,star,感謝閱讀。

953487-26b88310ebdae1c7.png
IFMMenu展示圖

下一篇預告:

cocoapods私有倉庫搭建


參考文章:
如何釋出自己的開源框架到CocoaPods
把自己的開源庫新增cocoapods
3分鐘讓你的框架支援cocoapods,podspec檔案講解
iOS:手把手教你釋出程式碼到CocoaPods(Trunk方式)
iOS開發CocoPods支援報錯

相關文章