釋出自己的cocoapods
開源庫按照以下步驟,良心製作,包教包會!!
下面我會通過一個名為IFMMenu的專案來講解一下整個過程。
1.寫好程式碼,上傳到github
github
上建立專案倉庫的時候記得建立LICENSE
(許可證/授權)檔案,此檔案必須要有。
2.將自己的專案打成tag
因為cocoapods
是依賴tag
版本的,所以必須打tag
,以後再次更新只需要把你的專案打一個tag
,然後修改.podspec
檔案中的版本接著提交到cocoapods
官方就可以了,提交命令請看下面
1 2 3 4 5 |
//為git打tag, 第一次需要在前面加一個v git tag "v1.0.0" git push --tags |
3.註冊CocoaPods
trunk
需要CocoaPods 0.33
版本以上,用pod --version
命令檢視版本,如果版本低,需要升級。
1 2 3 4 5 6 |
pod --version //版本低於0.33 sudo gen install cocoapods pod setup |
已經註冊過的不需要註冊,怎麼看自己有沒有註冊
1 2 |
pod trunk me |
若未註冊,執行以下命令,郵箱以及使用者名稱請對號入座。使用者名稱我使用的是Github
上的使用者名稱。
1 2 3 |
// 加上--verbose可以輸出詳細錯誤資訊,方便出錯時檢視。 pod trunk register example@example.com 'liugangios' --verbose |
註冊完成之後會給你的郵箱發個郵件,進入郵箱郵件裡面有個連結,需要點選確認一下。
註冊完成後使用pod trunk me
檢驗註冊是否成功。
4.建立.podspec
cd
到你專案的目錄,執行命令
1 2 |
pod spec create IFMMenu |
5.編輯.podspec
建立好後,開啟.podspec
,刪除註釋, 前面有#的為註釋,也可以用以下程式碼替換,然後編輯自己的庫資訊。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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:
是否支援ARCs.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寫法及含義
1 2 3 4 |
"IFMMenu/* "IFMMenu/IFMMenu/*.{h,m}" "IFMMenu/**/*.h" |
*
表示匹配所有檔案
*.{h,m}
表示匹配所有以.h
和.m
結尾的檔案
**
表示匹配所有子目錄
s.source常見寫法
1 2 3 4 |
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
檔案
使用以下命令測試本地.podspec
檔案是否存在語法錯誤。
1 2 |
pod spec lint IFMMenu.podspec --verbose |
7.釋出
1 2 |
pod trunk push IFMMenu.podspec |
時間較長,耐性等待,大概5-10分鐘,釋出成功後會有以下提示
8.測試自己的cocoapods
這個時候使用pod search
搜尋的話會提示搜尋不到,可以執行以下命令更新本地search_index.json
檔案
1 2 |
rm ~/Library/Caches/CocoaPods/search_index.json |
然後
1 2 |
pod search IFMMenu |
該命令會重新建立search_index.json
檔案,5-10分鐘,耐性等待
完整命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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 |
報錯處理
1 2 |
[!] Unable to accept duplicate entry for: XXXXX (1.0.0) |
意思是:不能接受同一版本的提交
解決方案:
1、執行如下命令
1 2 3 |
git tag 1.0.1 git push --tags |
2、修改XXXX.podspec
檔案中的內容
1 2 3 |
s.version = "1.0.1" s.source = { :Git => "https://github.com/xxx/xxx.git", :tag => "1.0.1" } |
3、執行命令pod spec lint
、pod trunk push 庫名.podspec
驗證並提交到CocoPods
最後
IFMMenu是一個仿微信首頁新增選單的多功能、多種屬性可自定義的下拉選單,歡迎download
下載提意見,star,感謝閱讀。
下一篇預告:
cocoapods私有倉庫搭建
參考文章:
如何釋出自己的開源框架到CocoaPods
把自己的開源庫新增cocoapods
3分鐘讓你的框架支援cocoapods,podspec檔案講解
iOS:手把手教你釋出程式碼到CocoaPods(Trunk方式)
iOS開發CocoPods支援報錯