手把手教你發布自己的CocoaPods開源庫
發布自己的cocoapods開源庫按照以下步驟,良心制作,包教包會!!
下面我會通過一個名為IFMMenu的項目來講解一下整個過程。
1.寫好代碼,上傳到github
github上創建項目倉庫的時候記得創建LICENSE(許可證/授權)文件,此文件必須要有。
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
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文件
項目內文件
使用以下命令測試本地.podspec文件是否存在語法錯誤。
- pod spec lint IFMMenu.podspec --verbose
7.發布
- pod trunk push IFMMenu.podspec
時間較長,耐性等待,大概5-10分鐘,發布成功后會有以下提示
發布成功截圖
8.測試自己的cocoapods
這個時候使用pod search搜索的話會提示搜索不到,可以執行以下命令更新本地search_index.json文件
- rm ~/Library/Caches/CocoaPods/search_index.json
然后
- pod search IFMMenu
該命令會重新創建search_index.json文件,5-10分鐘,耐性等待
搜索結果
完整命令
- 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 lint、pod trunk push 庫名.podspec驗證并提交到CocoPods
***
IFMMenu是一個仿微信首頁添加菜單的多功能、多種屬性可自定義的下拉菜單,歡迎download下載提意見,star,感謝閱讀。