封裝自己的庫到CocoaPods (Trunk),以及podspec文件

說明

本文介紹采用 trunk 方式上傳CocoaPods
trunk需要pod在0.33及以上版本,如果你不滿足要求,需要更新pod.

CocoaPods官方博客

圖片是流程圖


image

一:在Github上新建一個(gè)repo,上傳代碼.

不多講 此篇文章Demo地址

需要注意的一點(diǎn)是:必須跟遠(yuǎn)程倉庫打tag

git tag 0.2.0 -light

解釋:創(chuàng)建輕量標(biāo)簽不需要傳遞參數(shù),直接指定標(biāo)簽名稱即可。

git tag -a 0.1.0 -m "xxxxxxxxxxxx"

解釋:創(chuàng)建附注標(biāo)簽時(shí),參數(shù)-a即annotated的縮寫,指定標(biāo)簽類型,后附標(biāo)簽名。參數(shù)m指定標(biāo)簽說明,說明信息會(huì)保存在標(biāo)簽對(duì)象中。

tag 相關(guān)操作

列出當(dāng)前倉庫的所有標(biāo)簽
$ git tag

列出符合模式的標(biāo)簽
$ git tag -l 'v0.1.*'

查看標(biāo)簽版本信息
$ git show v0.1.0

刪除本地tag
git tag -d <tagname>
    
刪除遠(yuǎn)程tag
git push origin --delete tag <tagname>

查看所有遠(yuǎn)程分支
git branch -a 

查看tag
git tag

在某個(gè)commit 上打tag
git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233  
  
本地tag推送到線上
git push origin test_tag 

本地刪除tag   
git tag -d test_tag  

本地tag刪除了,再執(zhí)行該句,刪除線上tag      
git push origin :refs/tags/test_tag 

切換  分支
git checkout xxxxxxxx

切換標(biāo)簽與切換分支命令相同
$ git checkout [tagname]
解釋:切換標(biāo)簽后處于一個(gè)空的分支上,即”You are in ‘detached HEAD’ state.”

誤打或需要修改標(biāo)簽時(shí),需要先將標(biāo)簽刪除,再打新標(biāo)簽
$ git tag -d v0.1.2
解釋:參數(shù)-d即delete的縮寫,意為刪除其后指定的標(biāo)簽。

給指定的commit打標(biāo)簽
$ git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6
解釋:打標(biāo)簽不必要在HEAD之上,也可在之前的版本上打,這需要你知道某個(gè)提交對(duì)象的校驗(yàn)和,通過git log命令獲取。

將v0.1.0標(biāo)簽提交到git服務(wù)器
$ git push origin v0.1.0
解釋:通常的git push不會(huì)將標(biāo)簽對(duì)象提交到git服務(wù)器,我們需要進(jìn)行顯式的操作。

將本地所有標(biāo)簽一次性提交到git服務(wù)器
$ git push origin –tags
git遠(yuǎn)程倉庫的操作
git查看遠(yuǎn)程倉庫地址命令:git remote -v
git移除遠(yuǎn)程倉庫地址: git remote rm origin
git添加遠(yuǎn)程倉庫地址: git remote add origin
git remote add origin https://xxxxxxxxxx.git
git push -u origin master

二 :注冊(cè) trunk

pod trunk register yourEmail  yourName  --verbose

郵箱以及用戶名請(qǐng)對(duì)號(hào)入座。
用戶名我使用的是我的郵箱前綴。(一般別人喜歡用GitHub名字)
--verbose參數(shù)是為了便于輸出注冊(cè)過程中的調(diào)試信息。
執(zhí)行上面的語句后,你的郵箱將會(huì)受到一封帶有驗(yàn)證鏈接的郵件,如果沒有請(qǐng)去垃圾箱找找,有可能被屏蔽了。
點(diǎn)擊郵件的鏈接就完成了trunk注冊(cè)流程。使用下面的命令可以向trunk服務(wù)器查詢自己的注冊(cè)信息:

pod trunk me

輸出如下信息就表示你注冊(cè)成功,可以進(jìn)行下面的流程:


Snip20180404_2.png

三:配置PodSpec文件

需要做兩件事情
1、為你的代碼添加podspec描述文件;
2、將podspec文件通過trunk推送給CocoaPods服務(wù)器

什么是podspec描述文件呢?
簡單地講就是讓CocoaPods搜索引擎知道你的代碼的作者、版本號(hào)、源代碼地址、依賴庫等信息的文件。任何支持CocoaPods的開源代碼都必須有podspec文件。
官方配置文件說明地址

Pod::Spec.new do |s|
  s.name         = "LearnCocoaPods"
  s.version      = "0.0.1"
  s.summary      = "UIBarButtonItem extension"
  s.description  = "UIBarButtonItem extension  Learn CocoaPods"
  s.homepage     = "https://github.com/zhangxueyang/LearnCocoaPods"
  s.license      = "MIT"
  s.author             = { "cocoazxy" => "cocoazxy@gmail.com" }
  s.platform     = :ios, "5.0"
  s.source       = { :git => "https://github.com/zhangxueyang/LearnCocoaPods.git", :tag => "#{s.version}" }
  s.source_files  = "Classes", "Classes/**/*.{h,m}"
  s.requires_arc = true
end

podspec文件中有很多參數(shù),但并不是每一個(gè)都能用上,我寫的這個(gè)podspec文件中的參數(shù)基本上夠用了。這個(gè)文件使用ruby語言寫的,所以如果有ruby語言的功底看這個(gè)代碼應(yīng)該很熟悉,當(dāng)然沒有也沒關(guān)系,因?yàn)槔斫馄饋韺?shí)在太簡單了。

下面還是挨個(gè)對(duì)每個(gè)參數(shù)介紹下:

1.name :pod的名字,應(yīng)該與你的工程名保持一致
2.version: 版本號(hào),你以為是你工程的版本號(hào),那你就大錯(cuò)特錯(cuò)了,我在這個(gè)地方坑了好久。后來才知道這個(gè)version是和你的branch名稱保持一致的,如果你的branch名字叫做1.0.0,那這個(gè)version就可以要寫成1.0.0,當(dāng)更新版本的時(shí)候,要重新建立一個(gè)branch命名為1.0.1,然后version也要寫成1.0.1。
3.summary:一句話介紹你的pod
4.homepage:pod的url地址
5.license:你的pod所遵守的開源協(xié)議、 一般都是‘MIT’
6.author: 作者名,聯(lián)系方式
7.platform:pod所支持平臺(tái)和最小系統(tǒng)版本
8.ios.deployment_target:同上
9.source:pod的地址和tag
10.source_files:pod在工程中的所在目錄,如果有多個(gè)不同的目錄,則寫成這種形式 :’floder1…’,’floder2….’,’….’
11.requires_arc:是否是ARC。

3.1---添加podspec描述文件

pod trunk push  LearnCocoaPods.podspec  --allow-warnings

pod trunk push  xxxxxxxxxx.podspec(換成你自己的podspec文件名字)

3.2--- 等待上傳成功就好

在上傳的過程工作了三件事
1、驗(yàn)證你的podspec文件是否合法。在trunk方式之前我們一般用“pod lib lint”命令進(jìn)行驗(yàn)證。
2、上傳podspec文件到trunk服務(wù)器(其實(shí)最終也會(huì)自動(dòng)添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁瑣操作)
3、將你上傳的podspec文件轉(zhuǎn)成json格式文件
執(zhí)行上面的push操作,就相當(dāng)于你把你的源代碼提交給CocoaPods團(tuán)隊(duì)審核了,現(xiàn)在CocoaPods審核只需要幾秒鐘或者幾分鐘就可以完成了。
看到這個(gè) 說明成功了

--------------------------------------------------------------------------------
 ??  Congrats

 ??  LearnCocoaPods (0.0.1) successfully published
 ??  April 4th, 08:54
 ??  https://cocoapods.org/pods/LearnCocoaPods
 ??  Tell your friends!
--------------------------------------------------------------------------------

3.3--- 搜索看能不能找到我們的庫文件

先用"pod search"查找一下你的代碼,有結(jié)果的話就歡天喜地;沒有的話執(zhí)行"pod setup"進(jìn)行本地依賴庫更新,再search。

pod setup 更新慢的解決辦法

因?yàn)樵?pod setup 更新過程中:
Cocoapods在將https://github.com/CocoaPods/Specs的信息下載到你電腦的~/.cocoapods目錄下并進(jìn)行文件比對(duì),總數(shù)據(jù)大小大約在100MB左右,再加上服務(wù)器在國外,因此速度會(huì)比較慢。
在執(zhí)行過程中你也可以新開一個(gè)Terminal窗口,cd到~/.cocoapods目錄,用du -sh *來查看下載進(jìn)度。

解決辦法就是替換鏡像文件
先用這個(gè)命令查看軟件源

gem sources -l 
如果是 https://rubygems.org/ 
或者是 https://ruby.taobao.org/

就需要先移除掉
gem sources --remove https://rubygems.org/
gem sources --remove https://ruby.taobao.org/
gem sources --remove https://gems.ruby-china.org/
淘寶鏡像已經(jīng)不提供更新

換成這個(gè)
gem sources --add https://gems.ruby-china.com/

在進(jìn)行pod setup 就會(huì)快很多

error: RPC failed

error: RPC failed

error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: early EOF

報(bào)錯(cuò)原因:

git緩存區(qū)不足

解決方案

修改Git的傳輸字節(jié)限制即可。

git config --global http.postBuffer  524288000

建議看下這篇文章 用CocoaPods做iOS程序的依賴管理
關(guān)于文章中的 淘寶鏡像源 應(yīng)該是作者好久沒更新文章 所以還是淘寶的, 在上邊已經(jīng)說明,需要特別注意.

說下遇到的坑

1搜索不出來結(jié)果
Unable to find a pod with name, author, summary, or descriptionmatching 'xxxxxxx'。
解決辦法:
刪除~/Library/Caches/CocoaPods目錄下的search_index.json文件

pod setup成功后會(huì)生成~/Library/Caches/CocoaPods/search_index.json文件。
終端輸入rm ~/Library/Caches/CocoaPods/search_index.json
刪除成功后再執(zhí)行pod search

podspec文件更新方法

執(zhí)行pod trunk push操作后發(fā)現(xiàn)podspec文件的某個(gè)地方寫錯(cuò)了,想更新一下。
對(duì)于這種情況,我們可能會(huì)先嘗試著在把podspec文件push一次。但是如果你的代碼版本號(hào)沒變(podspec里的version自然也沒變)就會(huì)提示push失敗,即使你更改了podspec的其他地方,pod也會(huì)認(rèn)為這兩個(gè)文件是同一個(gè)。
更新源代碼版本號(hào)(如:1.1.1->1.1.2)
重新push version tag,然后再執(zhí)行pod trunk push操作。

上邊是直接提交了文件夾上去 接下來是提交帶有demo的文件

參考下邊文章就好了
使用Cocoapods創(chuàng)建私有podspec,帶有DEMO
這個(gè)排版比較好點(diǎn)
更新版本的錯(cuò)誤處理,一般是忘記改 版本號(hào) 或者 忘記在spec 文件沒有改 version

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、創(chuàng)建的github倉庫原文地址 1 進(jìn)入Github網(wǎng)站www.github.com登陸自己的賬號(hào)后 2 建立...
    freesan44閱讀 4,127評(píng)論 2 12
  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,873評(píng)論 0 39
  • 網(wǎng)上將自己的項(xiàng)目做成Pod 的文檔很多,但是有些文檔已經(jīng)很老了,不適合新手上手,經(jīng)過這兩天的研究我決定還是自己寫一...
    黃魚兒啦啦啦閱讀 7,338評(píng)論 10 17
  • 筱雅/文 “家是最小國,國是千萬家……”。 什么是家?有媽、有爸、有娃,這就是一個(gè)家。 什么是年?就是一個(gè)家聚在一...
    秋水淺語閱讀 297評(píng)論 1 3
  • 我們總是把過錯(cuò)歸結(jié)于無知,以為掩飾了傷口,就可以維持從前的美好??!卻不知自己內(nèi)心的傷口,卻沒那么容易修復(fù),即使外表...
    BlueSky6閱讀 337評(píng)論 0 0

友情鏈接更多精彩內(nèi)容