使用Cocoapods為模塊化創(chuàng)建私有pods筆記

學(xué)習(xí)新知識必然是一個踩坑的過程乡摹,這兩天看了下pod私有庫的創(chuàng)建,總體來說還是比較簡單的缩赛,但是中間踩了一個坑耙箍,也不能說是坑吧,只是自己技術(shù)不扎實峦筒,花了兩個下午才完全熟練究西。

私有庫的創(chuàng)建網(wǎng)上教程很多,但是對于基礎(chǔ)知識欠缺而且專業(yè)名詞知道的甚少的我來說還是有很大的困難的物喷,所以記錄一下卤材,畢竟我的記性那么不好

創(chuàng)建一個私有的podspec包括如下那么幾個步驟:

1.創(chuàng)建一個私有的Spec Repo。
2.創(chuàng)建Pod的所需要的項目工程文件峦失,并且有可訪問的項目版本git地址扇丛。
3.創(chuàng)建并修改Pod所對應(yīng)的podspec文件。
4.本地測試配置好的podspec文件是否可用尉辑。
5.提交項目和podspec配置到Git倉庫帆精,并打標(biāo)簽。
6.向私有的Spec Repo中提交podspec隧魄。
7.在個人項目中的Podfile中增加剛剛制作的好的Pod并使用卓练。
8.更新維護(hù)podspec。

整體流程就是這8個步驟购啄,其中前7個步驟是開始襟企,第8個步驟是使用更新,畢竟我們的庫也不是寫好后就不會更改的

1創(chuàng)建一個私有的Spec Repo

這里叫做創(chuàng)建一個私有的倉庫源或者倉庫列表狮含,或者直接叫做倉庫顽悼,或者是叫索引曼振。

Spec RepoPods的倉庫列表,我們pod install或者pod update的時候會從倉庫列表中查找當(dāng)前最新的版本蔚龙,然后進(jìn)行下載更新冰评。如果我們要做私有庫,就不能放在官方的倉庫列表中木羹,所以要創(chuàng)建一個私有的倉庫列表甲雅,來存放我們私有庫的列表。
如果你使用過pod坑填,本地會有一個倉庫列表务荆,每次pod install 或者pod update會對倉庫列表進(jìn)行更新。在~/.cocoapods/repos目錄下,master就是官方的倉庫列表穷遂,里面的都是開源的函匕,我們通過pod search XXX命令就可以搜索到這些開源庫

POD私有1

比如pod search 1210,可能是某個同學(xué)寫的私有庫的測試小demo蚪黑,這里建議大家不要隨便往共用倉庫列表里面添加無用的開源庫盅惜,這個倉庫列表可是分發(fā)到全世界的!

POD私有2

進(jìn)入正題忌穿,創(chuàng)建一個私有Spec Repo抒寂,私有倉庫列表就是一個普通的空的git倉庫(后面會添加內(nèi)容的),在你們的git服務(wù)器上面創(chuàng)建一個新的倉庫就行掠剑,不需要里面有任何文件屈芜,然后你可以拿到你的git倉庫的一個地址,比如我coding網(wǎng)站上面創(chuàng)建一個名字為DDSpecs的倉庫朴译,git地址是:https://coding.net/Yasin/DDSpecs.git(你是訪問不通的)井佑,然后在終端下執(zhí)行命令,將新創(chuàng)建的私有倉庫添加到本地Pods里面眠寿,這樣就相當(dāng)于使用pod的時候多了一個倉庫列表躬翁,多了一個數(shù)據(jù)源。

$ pod repo add DDSpecs https://coding.net/Yasin/DDSpecs.git

這個命令可能會進(jìn)行一些賬號的驗證盯拱,成功后就像上圖1里面一樣會多一個pod倉庫列表『蟹ⅲ現(xiàn)在可以看到DDSpecs文件夾下面是空的速种,這是正常的年局,因為是一個全新的倉庫列表。添加公司已有的倉庫列表也是這個命令蓖议,但是里面可能會有私有庫列表奢浑。

2創(chuàng)建Pod的所需要的項目工程文件蛮艰,并且有可訪問的項目版本git地址

這個步驟的目的:創(chuàng)建我們的模塊項目(一般是一個可運行的demo,個別比較特殊的只有模塊的文件)殷费,把模塊的文件按照真實文件夾放好印荔,并且上傳到git服務(wù)器,得到git地址详羡。(附帶可以在這一步創(chuàng)建后面所需要的podspec文件和license文件)

這里我們也需要模塊項目的git地址仍律,這個地址是下載代碼用的,可能你的模塊已經(jīng)創(chuàng)建好了git实柠,也可能沒有水泉,這都不重要,重要的是要有一個代碼的git地址窒盐。
這里提供三個方法草则,自己選擇喜歡合適的就行了:

  1. 使用命令創(chuàng)建一個新的項目工程
    找到一個存放項目的文件夾,輸入下面的命令
$ pod lib create UserModelDemo

POD私有3

這里會創(chuàng)建一個名為UserModelDemo的項目蟹漓,里面包含了我們下面要用到的podspec文件和license文件炕横,可以對項目進(jìn)行修改,變成我們想要的樣子葡粒。

  1. 使用命令接入已有的模塊項目
    找到一個存放項目的文件夾份殿,輸入下面的命令
$ pod spec create PodTestLibrary git@coding.net:Yasin/UserModelDemo.git

這個命令我沒有試過,留個坑給大家吧嗽交。應(yīng)該也會創(chuàng)建podspec文件和license文件

  1. 正常手動創(chuàng)建一個項目
    就是平常我們創(chuàng)建項目的流程卿嘲,創(chuàng)建一個普通的項目,或者說是已有的夫壁,然后修改成我們需要的樣子拾枣。

這三種方法都可以,關(guān)鍵是要有g(shù)it地址盒让,請再次確認(rèn)我們這一步驟的目的達(dá)到了梅肤。真實文件夾存放git地址邑茄。

3創(chuàng)建并修改Pod所對應(yīng)的podspec文件

上面第二步可能已經(jīng)創(chuàng)建好了podspec文件和license文件凭语,也可能沒有,這一步重點介紹一下這兩個文件撩扒。

podspec文件是pods私有庫的描述文件似扔,是Ruby格式的,里面包含了下載地址搓谆,私有庫的版本等信息炒辉。沒有的可以創(chuàng)建一個,比如“DDUserModel.podspec”

 Pod::Spec.new do |s|
  s.name             = "DDUserModel"    #私有庫名稱
  s.version          = "1.0.0"          #版本號
  s.summary          = "Just Testing."     #簡短介紹泉手,下面是詳細(xì)介紹
  s.description      = <<-DESC
                       Testing Private Podspec.
 
                       * Markdown format.
                       * Don't worry about the indent, we strip it!
                       DESC
  s.homepage         = "https://coding.net/Yasin/UserModelDemo" 
  #主頁,這里要填寫可以訪問到的地址黔寇,不然驗證不通過

  # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2" #截圖
  s.license          = { :type => 'MIT', :file => 'LICENSE' }             #開源協(xié)議
  s.author           = { 'Yasin' => 'yasinzhou@foxmail.com' }                   #作者信息
  s.source           = { :git => "https://coding.net/Yasin/UserModelDemo.git", :tag => s.version.to_s }      
  #項目地址,這里不支持ssh的地址斩萌,驗證不通過缝裤,只支持HTTP和HTTPS屏轰,最好使用HTTPS

  # s.social_media_url = 'https://twitter.com/<twitter_username>'  #多媒體介紹地址
 
  s.platform     = :ios, '7.0'            #支持的平臺及版本
  s.requires_arc = true                   #是否使用ARC,如果指定具體文件憋飞,則具體的問題使用ARC
 
  s.source_files = 'Pod/Classes/**/*'     
  #代碼源文件地址霎苗,**/*表示Classes目錄及其子目錄下所有文件,
  #如果有多個目錄下則用逗號分開榛做,如果需要在項目中分組顯示唁盏,這里也要做相應(yīng)的設(shè)置
  s.resource_bundles = {
    'PodTestLibrary' => ['Pod/Assets/*.png']
  }                                       #資源文件地址
 
  s.public_header_files = 'Pod/Classes/**/*.h'   #公開頭文件地址
  s.frameworks = 'UIKit'                  #所需的framework,多個用逗號隔開
  s.dependency 'AFNetworking', '~> 2.3'   
  #依賴關(guān)系检眯,該項目所依賴的其他庫厘擂,如果有多個需要填寫多個s.dependency
end

這個文件基本上就這些內(nèi)容,可以下載幾個開源庫(不是pod安裝锰瘸,而是直接去下載帶有demo的項目庫)對照參考一下刽严,加深理解。我也是看了好幾個開源庫的才看懂的避凝。

license文件就是上面描述文件里面提到的開源協(xié)議港庄,是一個文本文件,直接拷貝一份恕曲,修改一下里面的年份和作者信息就行了鹏氧,命名為“LICENSE”,沒有后綴

Copyright (c) 2016 Yasin <yasinzhou@foxmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

4本地測試配置好的podspec文件是否可用

測試一下podspec文件是否書寫正確

這一步只是簡單的測試一下是否有格式錯誤,使用命令

$ pod lib lint

如果有錯誤根據(jù)提示修改就好了佩谣,一般來說問題不大

5提交項目和podspec配置到Git倉庫把还,并打標(biāo)簽

將沒有錯誤的項目上傳到git,和podspec文件和license文件一起上傳茸俭。
上面的podspec文件中提到一個版本號吊履,這個是git倉庫標(biāo)簽,打標(biāo)簽的方法就不說了调鬓,不會的查一下吧艇炎,這里需要注意的是打標(biāo)簽需要推送到遠(yuǎn)端
這個版本號和xcode中的那個版本沒有聯(lián)系的,不過一般為了查看方便腾窝,會修改為一致缀踪。
其他的也沒有什么了

6向私有的Spec Repo中提交podspec

完成這一步就可以使用pod install命令進(jìn)行安裝了

只有將podspec文件提交到倉庫列表后才能像平常一樣使用pods安裝管理,不過因為是私有的倉庫列表虹脯,換臺機(jī)器要重新添加倉庫列表

$ pod repo push DDSpecs DDUserModel.podspec  #前面是本地Repo名字 后面是podspec文件

這一步可能也會報錯驴娃,比如你的項目地址不能訪問啦、沒有開源協(xié)議啦循集、git遠(yuǎn)程倉庫沒有打標(biāo)簽啦...等等唇敞,如果報錯根據(jù)提示修改,修改之后從步驟5重新走一下,要修改版本號和重新打標(biāo)簽疆柔,或者你可以把原來的標(biāo)簽刪了咒精,再加在最新的節(jié)點上,但是一般不建議這樣做旷档。

這個地方感覺挺麻煩的模叙,不知道是不是我理解的有問題,有理解更好的可以交流一下彬犯,大家都是一起學(xué)習(xí)的嘛??

7在個人項目中的Podfile中增加剛剛制作的好的Pod并使用

完成后可以新建一個工程,就像使用普通pod庫一樣試驗一下

這里再說一個坑:swift的類和成員變量在pod里面都是私有的??查吊,所以在定義可以給外面引用的類和成員變量的時候要加上public屬性谐区,不然你會看到文件pod下來了,但是引用類和成員變量的時候會提示找不到逻卖。我艸了宋列,當(dāng)時在這個地方卡了一個下午,各種配置都是對的评也,就是引用不了炼杖,試了各種方法,后來才發(fā)現(xiàn)是權(quán)限的問題??盗迟,只能說自己好傻坤邪,基礎(chǔ)知識太欠啊

8更新維護(hù)podspec

私有庫也是會更新的,基本上都是把更新后的內(nèi)容push到遠(yuǎn)端git服務(wù)器罚缕,然后重走5和6的步驟艇纺,重新打標(biāo)簽,重新推送到pod倉庫列表邮弹,然后在項目里面pod install或者pod update

總結(jié)

首先有幾個疑問:
1.模塊化如果使用pods私有庫的話黔衡,那每次修改豈不是都要更新維護(hù)podspec?特別是在改BUG的時候腌乡,那種是不是太痛苦盟劫?
2.感覺模塊化pods私有庫更適合大一點的團(tuán)隊使用,每個人負(fù)責(zé)一個私有庫的維護(hù)与纽,如果是一兩個人侣签,每個模塊一個pods私有庫,那是不是太痛苦急迂?

另外說一下如果pod私有庫有依賴關(guān)系的話硝岗,上傳git服務(wù)器的時候可以對依賴庫進(jìn)行忽略。
如果是使用SourceTree可以在設(shè)置-高級里面添加忽略路徑袋毙,比如/Example/Pods型檀,更多更高級的用法可以更深入的學(xué)習(xí)哈

POD私有4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市听盖,隨后出現(xiàn)的幾起案子胀溺,更是在濱河造成了極大的恐慌裂七,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仓坞,死亡現(xiàn)場離奇詭異背零,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)无埃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門徙瓶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫉称,你說我怎么就攤上這事侦镇。” “怎么了织阅?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵壳繁,是天一觀的道長。 經(jīng)常有香客問我荔棉,道長闹炉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任润樱,我火速辦了婚禮渣触,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壹若。我一直安慰自己昵观,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布舌稀。 她就那樣靜靜地躺著啊犬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壁查。 梳的紋絲不亂的頭發(fā)上觉至,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音睡腿,去河邊找鬼语御。 笑死,一個胖子當(dāng)著我的面吹牛席怪,可吹牛的內(nèi)容都是我干的应闯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼挂捻,長吁一口氣:“原來是場噩夢啊……” “哼碉纺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤骨田,失蹤者是張志新(化名)和其女友劉穎耿导,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體态贤,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡舱呻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悠汽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箱吕。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柿冲,靈堂內(nèi)的尸體忽然破棺而出茬高,到底是詐尸還是另有隱情,我是刑警寧澤姻采,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布雅采,位于F島的核電站爵憎,受9級特大地震影響慨亲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宝鼓,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一刑棵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愚铡,春花似錦蛉签、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邑雅,卻和暖如春片橡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淮野。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工捧书, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骤星。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓经瓷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洞难。 傳聞我的和親對象是個殘疾皇子舆吮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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