發(fā)布自己的cocoapods
開源庫按照以下步驟翘鸭,良心制作,包教包會>秸!
下面我會通過一個名為IFMMenu的項目來講解一下整個過程坝茎。
1.寫好代碼涤姊,上傳到github
github
上創(chuàng)建項目倉庫的時候記得創(chuàng)建LICENSE
(許可證/授權(quán))文件,此文件必須要有。
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
已經(jīng)注冊過的不需要注冊,怎么看自己有沒有注冊
pod trunk me
若未注冊厨喂,執(zhí)行以下命令,郵箱以及用戶名請對號入座庄呈。用戶名我使用的是Github
上的用戶名蜕煌。
// 加上--verbose可以輸出詳細(xì)錯誤信息,方便出錯時查看诬留。
pod trunk register example@example.com 'liugangios' --verbose
注冊完成之后會給你的郵箱發(fā)個郵件,進入郵箱郵件里面有個鏈接,需要點擊確認(rèn)一下斜纪。
注冊完成后使用pod trunk me
檢驗注冊是否成功。
4.創(chuàng)建.podspec
cd
到你項目的目錄,執(zhí)行命令
pod spec create IFMMenu
5.編輯.podspec
創(chuàng)建好后文兑,打開.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
搜索的關(guān)鍵詞,注意這里一定要和.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:
社交網(wǎng)址 -
s.resources:
資源文件 -
s.dependency:
依賴庫,不能依賴未發(fā)布的庫
s.license= { :type => "MIT", :file => "LICENSE" }
這里建議這樣寫,如果寫別的會報警告,導(dǎo)致后面一直提交失敗籍铁。
source_files寫法及含義
"IFMMenu/*
"IFMMenu/IFMMenu/*.{h,m}"
"IFMMenu/**/*.h"
*
表示匹配所有文件
*.{h,m}
表示匹配所有以.h
和.m
結(jié)尾的文件
**
表示匹配所有子目錄
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.發(fā)布
pod trunk push IFMMenu.podspec
時間較長,耐性等待拒名,大概5-10分鐘吩愧,發(fā)布成功后會有以下提示
8.測試自己的cocoapods
這個時候使用pod search
搜索的話會提示搜索不到,可以執(zhí)行以下命令更新本地search_index.json
文件
rm ~/Library/Caches/CocoaPods/search_index.json
然后
pod search IFMMenu
該命令會重新創(chuàng)建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、執(zhí)行如下命令
git tag 1.0.1
git push --tags
2同云、修改XXXX.podspec
文件中的內(nèi)容
s.version = "1.0.1"
s.source = { :Git => "https://github.com/xxx/xxx.git", :tag => "1.0.1" }
3糖权、執(zhí)行命令pod spec lint
、pod trunk push 庫名.podspec
驗證并提交到CocoPods
最后
IFMMenu是一個仿微信首頁添加菜單的多功能梢杭、多種屬性可自定義的下拉菜單温兼,歡迎download
下載提意見,star武契,感謝閱讀募判。
下一篇預(yù)告:
cocoapods私有倉庫搭建
參考文章:
如何發(fā)布自己的開源框架到CocoaPods
把自己的開源庫添加cocoapods
3分鐘讓你的框架支持cocoapods,podspec文件講解
iOS:手把手教你發(fā)布代碼到CocoaPods(Trunk方式)
iOS開發(fā)CocoPods支持報錯