代碼發(fā)布到cocoapods

發(fā)布 Git 管理的代碼至Cocoapods

1. 創(chuàng)建.podspec文件

Git 管理的代碼都會(huì)有 .git 文件。首先打開終端, cd 到與.git 同級(jí)的目錄。
執(zhí)行命令:

$ pod spec create <NAME> 

<NAME> 替換成所要發(fā)布的項(xiàng)目的名稱。例如

$ pod spec create RTDatabase

執(zhí)行成功,終端會(huì)有途中所示提示。


終端執(zhí)行成功提示

2. 編輯.podspec文件

打開文件項(xiàng)目文件目錄,找到 *.podspec文件,雙擊打開。如果打不開,選擇Xcode 或者 Sublime Text打開。第一次打開會(huì)有一百多行,看起來(lái)很嚇人。先把注釋(.podspec中以#開頭的是注釋)刪除。

-> 大概留著么多東西就行了,需要的可以再添加進(jìn)來(lái)。

Pod::Spec.new do |s|
  s.name         = "RTDatabase" # 要發(fā)布項(xiàng)目的名稱,要與.podspec同名
  s.version      = "0.0.1"  # 版本號(hào)
  s.summary      = "A short description of RTDatabase." # 項(xiàng)目概括
  s.description  = <<-DESC            
                   DESC  # 項(xiàng)目描述。可以沒(méi)有,但有這一項(xiàng)就要有內(nèi)容。

  s.homepage     = "http://EXAMPLE/RTDatabase" # 個(gè)人主頁(yè)
  s.author             = { "ENUUI" => "ENUUI_C@163.com" } # 作者,以及聯(lián)系方式。

  s.license      = "MIT" # 發(fā)布的證書,不知道證書可以去了解一下。

  # s.requires_arc = true # 是否是arc的
  # s.platform     = :ios     #  運(yùn)行環(huán)境
  # s.ios.deployment_target = "5.0"  #  運(yùn)行環(huán)境,與所支持的系統(tǒng)版本
  # s.osx.deployment_target = "10.7"
  # s.watchos.deployment_target = "2.0"
  # s.tvos.deployment_target = "9.0"

  s.source       = { :git => "http://EXAMPLE/RTDatabase.git", :tag => "#{s.version}" } 

   # 項(xiàng)目源文件目錄
 s.source_files  =  "Classes/**/*.{h,m}"
  # s.public_header_files = "Classes/**/*.h"  # public頭文件目錄

  # s.dependency "JSONKit", "~> 1.4"  # 依賴的第三方
  # s.ios.frameworks = 'MobileCoreServices', 'CoreGraphics' # 依賴的系統(tǒng)庫(kù)
end

這樣以來(lái)就一目了然了,稍稍有點(diǎn)英語(yǔ)基礎(chǔ),就能看出來(lái)每一項(xiàng)的含義是什么。

s.source = { :git => "http://EXAMPLE/RTDatabase.git", :tag => "#{s.version}" }

  • 其中http://EXAMPLE/RTDatabase.git可以替換成托管代碼的git網(wǎng)站上的git clone用的網(wǎng)址,如https://github.com/FuihuiC/RTDB.git
    也可替換成項(xiàng)目的.git目錄,如/Users/ENUUI/Desktop/Codes/OptiDB/RTDB/.git
  • #{s.version}則一項(xiàng)建議就不要該了,這個(gè)的意思是,項(xiàng)目資源的release版本與.podspec中的s.version項(xiàng)中的版本號(hào)相同。

s.source_files = "Classes/**/*.{h,m}"
s.public_header_files = "Classes/**/*.h"

這兩項(xiàng)非常類似。剛開始的時(shí)候這個(gè)目錄還是很容易出問(wèn)題的。

  • 目錄起始要與.podspec所在的目錄同級(jí);
  • 其中的*代表任意長(zhǎng)度的任意的任意字符;
  • {h,m}中填寫文件后綴,出了h,m,還有swift等,多項(xiàng)以,隔開;
  • s.public_header_files = "Classes/**/*.h"這一項(xiàng)只會(huì)聲明公開的頭文件,不會(huì)按照路徑去加載。所以要保證這一項(xiàng)中的頭文件都已經(jīng)在s.source_files加載,或者單獨(dú)加載。

比如s.source_files = 'RTDatabase/core/RT*.{h,m}'.這句的意思是:RTDatabase/core/路徑下,所有以RT開頭的.h.m文件。

檢測(cè)本地pod是否通過(guò)。

  • 執(zhí)行命令: $ pod lib lint <NAME>.podspec --allow-warnings
  • <NAME>替換成自己的.podspec文件的名字,不保留尖括號(hào)。

3. 創(chuàng)建release版本

(1) Git 托管網(wǎng)站創(chuàng)建release版本

所有的 Git 托管網(wǎng)站都差不太多,以 GitHub 為例。

  • 首先,確保代碼都已經(jīng)提交完成。點(diǎn)擊release。
點(diǎn)擊release
  • 然后,點(diǎn)擊Draft a new release。
    點(diǎn)擊創(chuàng)建新的release
  • 在新建release界面,圖示1位置填寫索要?jiǎng)?chuàng)建release的版本號(hào)??梢赃x擇分支,起個(gè)標(biāo)題,填寫當(dāng)前版本的描述。其中,版本號(hào)是必填的。填寫完成后,點(diǎn)擊Publish release,新的release就創(chuàng)建好了。
    在新建`release`界面

創(chuàng)建完成后,一定要git pull一下,將新版信息pull到本地。

(2)本地創(chuàng)建release
  • 打開終端,cd.git所在目錄,執(zhí)行命令:
// <version>位置填寫要?jiǎng)?chuàng)建的 tag 的版本號(hào)。沒(méi)有尖括號(hào)。
$ git tag -a <version> -m '<message>'
  • 如果要提交到 Git 服務(wù)器,執(zhí)行下命令:
// <version> 填寫要提交的 tag 的版本號(hào)。沒(méi)有尖括號(hào)。
$ git push origin <version>
  • 刪除本地 tag
$  git tag -d <version>  //刪除本地tag
  • 刪除遠(yuǎn)程tag
$ git push origin <version> //刪除遠(yuǎn)程tag
// 或者
$ git push origin --delete tag <version>  //刪除遠(yuǎn)程tag

4. 發(fā)布

  • 首先,檢測(cè)文件的有效性,執(zhí)行命令:
$ pod spec lint --allow-warnings

執(zhí)行結(jié)果顯示*.podspec passed validation(一般是綠色的)時(shí)成功。

  • 發(fā)布到cocoapods,執(zhí)行命令:
$ pod trunk push <NAME>.podspec --allow-warnings

這個(gè)過(guò)程可能會(huì)慢一些,耐心等待就可以了。當(dāng)出現(xiàn)一些彩色的小圖案,并有Tell your friends!字樣的時(shí)候,說(shuō)明已經(jīng)成功了。

5. 問(wèn)題

  • 路徑問(wèn)題。在添加資源的時(shí)候,路徑一定要寫清楚,不能錯(cuò)點(diǎn)。
  • 代碼錯(cuò)誤。代碼有問(wèn)題是傳不上去的。
  • 沒(méi)有把 Git 服務(wù)器上的release拉到本地。

6.示例

文中提到的代碼 RTDatabase
RTDatabase 的 .podspec

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

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

  • 最近公司同時(shí)進(jìn)行兩個(gè)項(xiàng)目的開發(fā),而這兩個(gè)項(xiàng)目有一些共同的文件,比如:聊天消息管理類,第三方登陸分享管理類等等。如果...
    奔跑的時(shí)間閱讀 332評(píng)論 2 0
  • 一、概述 Cocoapods是當(dāng)前iOS開發(fā)最流行的版本依賴工具,開發(fā)者使用Cocoapods進(jìn)行項(xiàng)目的依賴管理會(huì)...
    Doliant_H閱讀 2,507評(píng)論 3 26
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • 1,CocoaPods的簡(jiǎn)單介紹以及使用 我這篇文章主要介紹如何將項(xiàng)目發(fā)布到CocoaPods上,安裝以及簡(jiǎn)單實(shí)用...
    李連毛閱讀 1,252評(píng)論 1 7
  • 時(shí)間總是匆忙 你來(lái)看我 只有半天 看了電影 吃了飯 逛了超市 然后各自回家
    wuli元芳閱讀 187評(píng)論 0 0

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