發(fā)布自己的開(kāi)源框架到CocoaPods

這兩天在寫了一個(gè)導(dǎo)航條控件,順帶把它發(fā)到了CocoaPods上,現(xiàn)在總結(jié)一下,順帶講一下我遇到的問(wèn)題,希望能夠幫助到大家。

總結(jié)一下就是以下幾個(gè)步驟:

1.把代碼提交到Github
2.給你的git打tag
3.創(chuàng)建.podspec描述文件
4.編輯.podspec描述文件
5.驗(yàn)證.podspec描述文件是否合法
6.注冊(cè)CocoaPods
7.提交到CocoaPods

下面一一做講解,開(kāi)始嘍!

1.把代碼提交到GitHub上

首先,創(chuàng)建GitHub倉(cāng)庫(kù),創(chuàng)建的時(shí)候一定要選擇下面這兩項(xiàng),license選擇“MIT”,如果沒(méi)選擇license,想法添加一個(gè)license進(jìn)入,要不然第5步驗(yàn)證的時(shí)候會(huì)報(bào)Unable to find a license file錯(cuò)誤

// 創(chuàng)建本地倉(cāng)庫(kù)
git init
// 添加名稱為origin的遠(yuǎn)程連接
git remote add origin '你的github項(xiàng)目地址'
// 將本地代碼加入本地倉(cāng)庫(kù)里
git add .
// 提交修改到本地倉(cāng)庫(kù)
git commit -m '你的修改記錄'
// 推送master分支的代碼到名稱為origin的遠(yuǎn)程倉(cāng)庫(kù)
git push origin master
711E296C-75E1-4C22-BCCC-87E3DBA8E97F.png

然后,把倉(cāng)庫(kù)Clone到本地,此時(shí)的文件夾應(yīng)該是這個(gè)樣子,可見(jiàn)的只有LICENSE和README兩個(gè)文件


38A818CB-E0E5-403D-BFB7-526C3F6158B7.png

然后把你的庫(kù)文件和項(xiàng)目Demo一同放入這一目錄下


QQ20181107-215524@2x.png

最后就可以把這些Push上去了。

2.給你的git打tag

打tag的目的就相當(dāng)于給你的開(kāi)源框架制定版本號(hào),每個(gè)版本一個(gè)tag,下面是打tag的流程:

// 查看本地tag
git tag
// 添加本地tag 0.0.1
git tag -a 0.0.1 -m 'release 0.0.1'
// 將tag傳到遠(yuǎn)程
git push origin --tags

tag的其他操作

// 刪除本地tag
git tag -d 1.0.0
// 刪除遠(yuǎn)程tag
git push origin -d tag 1.0.0

3.創(chuàng)建.podspec描述文件

上傳到cocoapods時(shí)主要就依賴著.podspec的描述文件來(lái)進(jìn)行配置的,所以我們要先建立一個(gè).podspec的描述文件:

// 初始化.podspec文件
pod spec create 你的項(xiàng)目名

4.編輯.podspec描述文件

用xcode打開(kāi)此文件,會(huì)發(fā)現(xiàn)里面有很多信息,帶#號(hào)的注釋不用管,我們依次看看他們所代表的含義:

  • s.name:名稱,pod search 搜索的關(guān)鍵詞,注意這里一定要和.podspec的名稱一樣,否則報(bào)錯(cuò)
  • s.version:版本號(hào)(必須和上面打的tag中的version保持一致)
  • s.ios.deployment_target:支持的pod最低版本
  • s.summary: 簡(jiǎn)介
  • s.homepage:項(xiàng)目主頁(yè)地址
  • s.license:許可證
  • s.author:作者
  • s.social_media_url:社交網(wǎng)址,這里我寫的微博默認(rèn)是Twitter,如果你寫Twitter的話,你的podspec發(fā)布成功后會(huì)@你
  • s.source:項(xiàng)目的地址
  • s.source_files:需要包含的源文件
  • s.resources: 資源文件
  • s.requires_arc: 是否支持ARC
  • s.dependency:依賴庫(kù),不能依賴未發(fā)布的庫(kù)
  • s.dependency:依賴庫(kù),如有多個(gè)可以這樣寫

下面是個(gè)樣本,僅供參考

Pod::Spec.new do |s|

  s.name         = "GLYPageView"
  s.version      = "0.0.1"
  s.summary      = "一個(gè)便捷標(biāo)簽欄."

  s.description  = <<-DESC
  GLYPageViewKit
                   DESC

  s.homepage     = "https://github.com/Jason318/GLYPageView"
  s.license      = "MIT"
  s.author             = { "Jason318" => "834699083@qq.com" }
  s.platform     = :ios, "7.0"
  s.source       = { :git => "https://github.com/Jason318/GLYPageView.git", :tag => "#{s.version}" }
  s.source_files  = "GLYPageView", "GLYPageView/GLYPageView/*.{h,m}"
  s.requires_arc = true

end

5.驗(yàn)證.podspec描述文件是否合法

pod spec lint 你的項(xiàng)目名.podspec 

驗(yàn)證過(guò)程可能會(huì)碰見(jiàn)幾個(gè)問(wèn)題,先說(shuō)說(shuō)我碰見(jiàn)的幾個(gè)問(wèn)題:

- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

這個(gè)問(wèn)題是因?yàn)閜odspec里的 s.source_files路徑有問(wèn)題,沒(méi)有匹配到想對(duì)應(yīng)的文件,所有有下面的編譯報(bào)錯(cuò)。這個(gè)路徑是相對(duì)podspec文件而言的。

unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices

原因是xcode模擬器找不著報(bào)錯(cuò),解決辦法:
steps 1:終端獲取Xcode路徑,即把Xcoe拖進(jìn)終端(一般都是/Applications/Xcode.app)
steps 2:在終端中繼續(xù)輸入 sudo xcode-select -switch Xcode路徑/Contents/Developer 即可。

這個(gè)過(guò)程會(huì)出現(xiàn)很多錯(cuò)誤,這里不一一列舉,大家按照錯(cuò)誤信息自行修改,不過(guò)一般不會(huì)出現(xiàn)錯(cuò)誤,只要你按照軍哥說(shuō)的做,基本上是沒(méi)有問(wèn)題的,因?yàn)檐姼缱哌^(guò)的坑已經(jīng)告訴你們了

6.注冊(cè)CocoaPods

pod trunk register 你的郵箱 '你的用戶名' --description='你的描述'

成功的話就會(huì)受到一份郵件,點(diǎn)擊郵件中的鏈接后驗(yàn)證一下:

pod trunk me

成功的話會(huì)返回以下類似字段:

  - Name:     WCL
  - Email:    wangchonglei93@icloud.com
  - Since:    January 10th, 21:32
  - Pods:
  - WCLImagePickerController
  - WCLShineButton
  - CRRefresh
  - Sessions:
  - January 10th, 21:32 - July 22nd, 07:38. IP: 58.132.205.59

如果你的pod是由多人維護(hù)的,你也可以添加其他維護(hù)者:

pod trunk add-owner ARAnalytics kyle@cocoapods.org

7.提交到CocoaPods

pod trunk push 命令會(huì)首先驗(yàn)證你本地的podspec文件(是否有錯(cuò)誤),之后會(huì)上傳spec文件到trunk,最后會(huì)將你上傳的podspec文件轉(zhuǎn)換為需要的json文件。在工程根目錄(包含有.podspec)下執(zhí)行命令:

pod trunk push ECGCustomAlertView.podspec

沒(méi)有錯(cuò)誤的話,會(huì)提示你成功,并返回一下類似代碼:

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

 ??  CRRefresh (1.0.0) successfully published
 ??  March 16th, 07:14
 ??  https://cocoapods.org/pods/CRRefresh
 ??  Tell your friends!
--------------------------------------------------------------------------------

最激動(dòng)人心的時(shí)刻到了,執(zhí)行pod search xxx 去查看你的庫(kù)吧,對(duì)了,別忘記pod setup更新本地CocoaPods庫(kù)。

最后的最后,實(shí)例僅供參考

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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