手把手教你發(fā)布自己的cocoapods開源庫

發(fā)布自己的cocoapods開源庫按照以下步驟翘鸭,良心制作,包教包會>秸!

下面我會通過一個名為IFMMenu的項目來講解一下整個過程坝茎。

1.寫好代碼涤姊,上傳到github

github上創(chuàng)建項目倉庫的時候記得創(chuàng)建LICENSE(許可證/授權(quán))文件,此文件必須要有。

github上創(chuàng)建項目倉庫

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
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文件
項目內(nèi)文件

使用以下命令測試本地.podspec文件是否存在語法錯誤涡上。

pod spec lint IFMMenu.podspec --verbose

7.發(fā)布

pod trunk push IFMMenu.podspec

時間較長,耐性等待拒名,大概5-10分鐘吩愧,發(fā)布成功后會有以下提示

發(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分鐘雁佳,耐性等待

搜索結(jié)果

完整命令

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 lintpod trunk push 庫名.podspec驗證并提交到CocoPods

最后

IFMMenu是一個仿微信首頁添加菜單的多功能梢杭、多種屬性可自定義的下拉菜單温兼,歡迎download下載提意見,star武契,感謝閱讀募判。

IFMMenu展示圖

下一篇預(yù)告:

cocoapods私有倉庫搭建


參考文章:
如何發(fā)布自己的開源框架到CocoaPods
把自己的開源庫添加cocoapods
3分鐘讓你的框架支持cocoapods,podspec文件講解
iOS:手把手教你發(fā)布代碼到CocoaPods(Trunk方式)
iOS開發(fā)CocoPods支持報錯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咒唆,隨后出現(xiàn)的幾起案子届垫,更是在濱河造成了極大的恐慌,老刑警劉巖全释,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件装处,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機妄迁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門寝蹈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人登淘,你說我怎么就攤上這事箫老。” “怎么了黔州?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵耍鬓,是天一觀的道長。 經(jīng)常有香客問我流妻,道長牲蜀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任绅这,我火速辦了婚禮涣达,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘君躺。我一直安慰自己峭判,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布棕叫。 她就那樣靜靜地躺著,像睡著了一般奕删。 火紅的嫁衣襯著肌膚如雪俺泣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天完残,我揣著相機與錄音伏钠,去河邊找鬼。 笑死谨设,一個胖子當(dāng)著我的面吹牛熟掂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扎拣,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赴肚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了二蓝?” 一聲冷哼從身側(cè)響起誉券,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刊愚,沒想到半個月后踊跟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡鸥诽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年商玫,在試婚紗的時候發(fā)現(xiàn)自己被綠了箕憾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拳昌,死狀恐怖袭异,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情地回,我是刑警寧澤扁远,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站刻像,受9級特大地震影響畅买,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜细睡,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一谷羞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溜徙,春花似錦湃缎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至图贸,卻和暖如春蹂季,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疏日。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工偿洁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沟优。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓涕滋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挠阁。 傳聞我的和親對象是個殘疾皇子宾肺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容