制作CocoaPods過程(二)

在開發(fā)過程中践宴,經(jīng)常會使用到第三框架哨查,我們通過一個pod install命令陨囊,很方便的就將第三方框架加到我們自己的項(xiàng)目中弦疮。

如果我們也想將自己寫的組件或庫開源出去,讓別人也可以通過pod install命令安裝自己的框架該怎么做呢蜘醋?下面胁塞,我就教大家一步一步的將自己的pods發(fā)布到CocoaPods 中。如果你現(xiàn)在對CocoaPods還不太了解压语,推薦你看一看這篇文章:用CocoaPods做iOS程序的依賴管理?

近期研究CocoPods的制作闲先,本文章為記錄其制作過程以及本人所遇到的問題,以及解決方法无蜂。本文章記錄本人制作的過程,如有可以修正之處蒙谓,歡迎留言指教斥季。

制作過程參考:

1.如何發(fā)布自己的開源框架到 CocoaPod?

2.CocoaPods 1.1.0上傳遇到swift問題?

3.CocoaPods詳解之 -- 制作篇?

主要過程如下:

一、創(chuàng)建自己的git倉庫?

二、clone倉庫到本地

三酣倾、向本地git倉庫中添加創(chuàng)建Pods依賴庫所需文件

四舵揭、提交修改文件到github

五、上傳podspec文件到CocoaPods官方倉庫中

六躁锡、查看我們自己創(chuàng)建的Pods依賴庫

七午绳、刪除提交到cocoapods上的框架

篇章較長,本次介紹第三映之、四步拦焚,全部篇章如下:

制作CocoaPods過程(一)

制作CocoaPods過程(二)

制作CocoaPods過程(三)

制作CocoaPods過程(四)問題匯總




三、向本地git倉庫中添加創(chuàng)建Pods依賴庫所需文件

打開終端杠输,cd 進(jìn)入步驟二clone的文件夾路徑下赎败,輸入指令pod spec create?‘’你的命名‘’,我的命名與文件夾名一致蠢甲。

?pod spec create demo.podspec

“TextEdit” 打開該文件顯示如下(截圖部分截圖):

該文件是ruby文件僵刮,里面的條目都很容易知道含義。

其中需要說明的幾個參數(shù):

s.name是我們庫的名稱鹦牛,s.version是庫原代碼版本號搞糕,s.summary是對我們庫的一個簡單的介紹,s.homepage聲明庫的主頁曼追,s.license是所采用的授權(quán)版本窍仰,s.author是庫的作者。s.platform是我們庫所支持的軟件平臺拉鹃,這在我們最后提交進(jìn)行編譯 時有用辈赋。s.source聲明原代碼的地址。步驟一已經(jīng)托管在github上,所以這里將地址copy過來就行了膏燕。

對于很多第三方庫而言钥屈,在發(fā)布的時候都會打上一個tag,如版本0.0.1就會打上一個名為0.0.1的tag

我在github上面打的tag步驟為:

填寫相關(guān)release信息

我這里還是使用的tag坝辫,所以我這里就是這樣的:

s.source = { :git => "https://github.com/......git", :tag => "#{s.version}" }

以后我們的庫有新版本時篷就,我們可以修改相應(yīng)的version和source。

s.source_files聲明了我們庫的源代碼的位置近忙,所以這個地方不能填錯了竭业。

例如目錄結(jié)構(gòu)(此處摘自其他朋友寫的簡書說明,如何發(fā)布自己的開源框架到CocoaPods?):

所以工程根目錄下的HUPhotoBrowse文件夾才是庫的原代碼目錄及舍。

s.source_files??="HUPhotoBrowser","HUPhotoBrowser/**/*.{h,m}"

目錄的層級關(guān)系一定要跟代碼庫的保持一致未辆。這里前一部分可以不用的,因?yàn)槲疫@里后一部分的HUPhotoBrowser/**與前面是一致的锯玛,這個指定的目錄下的文件都會進(jìn)行編譯咐柜。如果該目錄下還有一些資源文件(如圖片等)兼蜈,這些文件并不需要進(jìn)行編譯∽居眩可以使用s.resourcs聲明为狸。*.{h,m}是一個類似正則表達(dá)式的字符串,表示匹配所有以.h和.m為擴(kuò)展名的文件遗契。

s.framework聲明了所依賴的核心庫辐棒,我這里只用到了UIKit,所以是這樣的:

s.framework??="UIKit"

如果你的項(xiàng)目中依賴多個庫,可以使用

s.frameworks?="SomeFramework","AnotherFramework"

當(dāng)然牍蜂,我們開發(fā)的庫中也可能還依賴第三方庫漾根,例如JSONKit,那么捷兰,就可以做如下聲明:

s.dependency?"JSONKit",?"~>?1.4"

如果有多個需要填寫多個s.dependency立叛。

附上一份文件,可作為參考贡茅,也可自行請參考其他人發(fā)布的項(xiàng)目秘蛇,獲取下來參考他們?nèi)绾尉庉嫞ū热纾?a target="_blank" rel="nofollow">Lede-Inc/LDBusMediator?):

Pod::Spec.new do |s|

s.name = "POD名字"

s.version = "0.0.2"

s.summary = "說明."

s.description = <<-DESC

? ? ? ? ? ? ? ? ? ? ? ? ? 描述內(nèi)容

? ? ? ? ? ? ? ? ? ? ? ? ? DESC

s.license = {:type => 'MIT', :file => 'LICENSE'}

s.homepage = 'https://github.com/...git的主頁地址'

s.author = { "作者" => "作者" }

s.source = { :git => "https://github.com/步驟一創(chuàng)建的git地址", :tag => "#{s.version}" }

s.platform = :ios, '9.0'

s.ios.deployment_target = '9.0'

s.source_files = '項(xiàng)目名字/發(fā)布的文件夾名字/*.{h,m}'

# s.resource = "*.png" ? 備注:如果有引用圖片

# s.resource_bundles = { '你的項(xiàng)目名' => ['文件所在文件夾/*.{xib}'] } ? ? 備注:如果有引用xib ?, storyboard;以逗號分開

s.requires_arc = true

end

編輯完podspec文件后顶考,需要驗(yàn)證一下這個文件是否可用赁还,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中驹沿,不過xcode的WARNING是可以存在的艘策,驗(yàn)證需要執(zhí)行命令:

XX為你制作的庫的命名

pod?spec?lint ?XX.podspec

如果有引用到庫framwork或C語言庫的話必須使用

pod spec lint XX.podspec --use-libraries?// 驗(yàn)證

pod spec lint XX.spec.podspec --verbose // 可以打印更多信息

pod spec lint XX.podspec --allow-warnings //忽略警告 ,如果你的項(xiàng)目存在警告

pod spec lint XX.podspec --use-libraries //引用到第三方?

pod spec?lint XX.podspec --verbose (打印錯誤信息)

當(dāng)看到 “你的PodName” passed validation.時渊季,說明驗(yàn)證通過了

驗(yàn)證podspec文件朋蔫,遇到幾個問題不能通過,文章最后把本人所遇到的問題以及解決方式說明一下却汉,希望能幫助到遇到同樣問題的朋友驯妄。





四、提交修改文件到github

在步驟三中增加很多新文件合砂,需要將它們提交到github倉庫中去青扔。我使用SourceTree ?commit的。

根據(jù)步驟三內(nèi)容翩伪,為pod添加版本號并打上tag微猖。然后執(zhí)行pod驗(yàn)證命令

pod?lib?lint

pod?lib?lint?--allow-warnings?//忽略警告 ,如果你的項(xiàng)目存在警告

如果一切正常缘屹,這條命令執(zhí)行完后會出現(xiàn)下面的輸出:

你的Pod名字 passed?validation.

到此凛剥,pod驗(yàn)證就結(jié)束了。

需要說明的是轻姿,在執(zhí)行pod驗(yàn)證命令的時候犁珠,打印出了任何warning或者error信息傅瞻,驗(yàn)證都會失敗盲憎!如果驗(yàn)證出現(xiàn)異常,打印的信息會很詳細(xì)胳挎,大家可以根據(jù)對應(yīng)提示做出修改饼疙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市慕爬,隨后出現(xiàn)的幾起案子窑眯,更是在濱河造成了極大的恐慌,老刑警劉巖医窿,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磅甩,死亡現(xiàn)場離奇詭異,居然都是意外死亡姥卢,警方通過查閱死者的電腦和手機(jī)卷要,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來独榴,“玉大人僧叉,你說我怎么就攤上這事」桌疲” “怎么了瓶堕?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長症歇。 經(jīng)常有香客問我郎笆,道長,這世上最難降的妖魔是什么忘晤? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任宛蚓,我火速辦了婚禮,結(jié)果婚禮上德频,老公的妹妹穿的比我還像新娘苍息。我一直安慰自己,他們只是感情好壹置,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布竞思。 她就那樣靜靜地躺著,像睡著了一般钞护。 火紅的嫁衣襯著肌膚如雪盖喷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天难咕,我揣著相機(jī)與錄音课梳,去河邊找鬼距辆。 笑死,一個胖子當(dāng)著我的面吹牛暮刃,可吹牛的內(nèi)容都是我干的跨算。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼椭懊,長吁一口氣:“原來是場噩夢啊……” “哼诸蚕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起氧猬,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤背犯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盅抚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漠魏,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年妄均,在試婚紗的時候發(fā)現(xiàn)自己被綠了柱锹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡丛晦,死狀恐怖奕纫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烫沙,我是刑警寧澤匹层,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站锌蓄,受9級特大地震影響升筏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘸爽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一您访、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剪决,春花似錦灵汪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渗鬼,卻和暖如春览露,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背譬胎。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工差牛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留命锄,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓偏化,卻偏偏與公主長得像脐恩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侦讨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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