iOS 建立自己本地cocoapod庫

目錄

<h2 id=1>創(chuàng)建與維護(hù)</h2>

下面詳細(xì)分為7個步驟來學(xué)習(xí)和掌握這項技能

<h3 id="1.1">創(chuàng)建并設(shè)置一個私有的Spec Repo</h3>

  1. 首先我們在github上建立一個自己的倉庫 LocalPod(倉庫名字任意)

  2. 在本地創(chuàng)建Spec Repo

     # pod repo add [Private Repo Name] [對應(yīng)的.git url]
     $ pod repo add LocalPod https://github.com/Maoyis/LocalPod.git
    

進(jìn)入 ~/.cocoapods/repos 目錄此時就能看到我們自己的pod倉庫了

MyPodFolder.png

PS: 如果有其他合作人員共同使用這個私有Spec Repo的話在他有對應(yīng)Git倉庫的權(quán)限的前提下執(zhí)行相同的命令添加這個Spec Repo即可塔淤。

<h3 id="1.2">創(chuàng)建PodLib(針對從零創(chuàng)建lib)</h3>

建好本地倉庫后我們來建一個自己的庫(lib), 如果已經(jīng)有一個lib只需要添加并配置相應(yīng)的podspec文件就行可忽略此步直接到下一階段。不過看看總不會有壞處的(?????)

  1. 創(chuàng)建一個lib(庫),詳見pod lib創(chuàng)建自己的lib。開始前首先得給我們的lib建一個版本庫(git,svn都行)創(chuàng)建一個

  2. 跳轉(zhuǎn)到一個用來保存自己庫的文件夾下來創(chuàng)建一個lib(推薦單獨(dú)創(chuàng)建一個專門用來保存自己的庫)婶芭,并在該目錄執(zhí)行

     #pod lib create [libName]
     $ pod lib create QXFullGestureView
    

執(zhí)行后正常情況下會有一個交互:
lib使用的語言swif/ObjeC

是否創(chuàng)建一個demo

選擇什么測試框架 [ Specta / Kiwi / None ]

是否進(jìn)行UI測試

類的前綴

然后就會在該目錄創(chuàng)建一個lib

libFolder.png
  1. 添加相關(guān)要生成lib的文件到Pod文件夾:(libName)/(libName)/Classes, 當(dāng)然還要刪除ReplaceMe.m文件(只要在提交前刪除掉就好)
addFile.png
  1. 該步驟非必要焦人,主要正對pod lib creat時創(chuàng)建過demo時觀察變化

     $cd Example
     $pod update
    

此時再展開工程會發(fā)現(xiàn)文件已經(jīng)添加到了項目中,但卻在開發(fā)模式pod文件加下(Development Pods)炫惩。

developPod.png

<h3 id="1.3">創(chuàng)建lib所對應(yīng)的podspec文件-(針對已存在的lib)</h3>

官方教程

  1. 在lib文件夾下執(zhí)行
    pod spec create QXFullGestureView https://github.com/Maoyis/MyLibrary.git

<h3 id="1.4">配置podspec與驗(yàn)證</h3>

  1. 配置MyLibrary.podspec(ruby文件)詳情

     s.name             = 'QXFullGestureView ' ##名字必須與libname相同
     s.version          = '0.1.0'     #版本必須為0.0.0格式
     s.summary          = 'all gesture view' #關(guān)于庫的一個簡短描述
     s.description      = <<-DESC
     TODO: 備注文字(較長描述)
                                 DESC
     #是否支持arc
     s.requires_arc = true
     #文件主頁
     s.homepage         = 'https://github.com/Maoyis/QXFullGestureView '
     #開源協(xié)議
     s.license          = { :type => 'MIT', :file => 'LICENSE' }
     #作者信息
     s.author           = { 'Maoyis' => 'xxxxxx@qq.com' }
     #源文件所在網(wǎng)絡(luò)路徑
     s.source           = { :git => 'https://github.com/Maoyis/QXFullGestureView .git', :tag => s.version.to_s }
     #支持版本
     s.ios.deployment_target = '7.0'
     #公開頭文件名
     s.public_header_files = 'Pod/Classes/**/*.h'
     #依賴的框架
     s.frameworks = 'UIKit', 'MapKit'
     #依賴庫
     s.dependency 'AFNetworking', '~> 2.3'
    
  2. 完成上面主要配置(并非所有配置)后昔园,驗(yàn)證一下這個文件是否可用蔓榄。執(zhí)行:

     #測試podspec檢查是否存在問題
     $ pod lib lint 
     //通過結(jié)果
      -> QXFullGestureView (0.1.0)
    
     QXFullGestureView passed validation.
     
     
     # 如果失敗也可以試試, 針對無法正確找到lib.podspec
     $ pod lib lint --source https://github.com/Maoyis/QXFullGestureView .git
           
     #如果有警告可以忽略
      $ pod lib lint --allow-warnings 
    

<h3 id="1.5">本地測試與提交</h3>

  1. 準(zhǔn)備:創(chuàng)建一個項目(如果沒pod lib創(chuàng)建或沒創(chuàng)建demo 否則跳過步驟1)配置Podfile

platform :ios, '7.0'

pod 'MyLibrary', :path => '……/podTest/QXFullGestureView ' #指定路徑

pod 'MyLibrary', :podspec => '……/QXFullGestureView .podspec' #指定podspec文件


pod install
  1. 編寫代碼,導(dǎo)入lib驗(yàn)證是否可以正常使用

     pod lib lint
    

由于人處于開發(fā)階段默刚,此時再展開工程會發(fā)現(xiàn)文件已經(jīng)添加到了項目中甥郑,但卻在開發(fā)模式Development Pods文件夾下(Development Pods)。

  1. 將lib提交到遠(yuǎn)端倉庫

     #跳轉(zhuǎn)到lib目錄下
     $cd [libFolder] 
     
     #由于lib已經(jīng)在git版本控制下就不需要初始化羡棵,直接添加文件提交
     $ git add .
     $ git commit -s -m "Initial Commit of Library"
     
     #添加遠(yuǎn)端倉庫(這里要用到第二個空倉庫存儲lib區(qū)別第一個用來存儲本地Spec Repo)
     $ git remote add origin https://github.com/Maoyis/QXFullGestureView .git           
     
     #提交到遠(yuǎn)端倉庫
     $ git push origin master  
    
  2. 由于podspec文件中獲取Git版本控制的項目還需要tag號壹若,所以我們要打上一個tag嗅钻,

     $ git tag -m "release 0.1.0" "0.1.0"
     $ git push --tags     #推送tag到遠(yuǎn)端倉庫   
    

接下來我們就要發(fā)布測試版為正式版了(提交自己的podspec到私有或公有Spec Repo)

<h3 id="1.6">向私有的Spec Repo中提交自己的podspec</h3>

  1. 提交podspec到自己的Spec Repo

     #pod repo [第一步建立的本地倉庫] [要上傳的podspec]
     $ pod repo push LocalPod QXFullGestureView.podspec
    

執(zhí)行完畢后本地查看本地倉庫就可以看到對應(yīng)的 文件夾/版本文件夾/上傳的podspec

屏幕快照 2017-05-18 下午11.33.12.png

并且你會看到

    Pushing the `QXSpecRepo' repo
    To https://github.com/Maoyis/LocalPod.git

對皂冰,他還會自動推送最新的Space Repo 到綁定的版本控制中心

屏幕快照 2017-05-18 下午11.47.06.png
  1. 搜索自己的lib

     pod searchQXFullGestureView
    

到這里一個屬于自己的pod庫就大功告成了

<h3 id="1.7">在自己項目中使用</h3>

這里既不贅述了店展,唯一需要注意的是pod install、Updat默認(rèn)不會去本地Pod文件夾查找lib秃流,只會默認(rèn)在master文件夾中尋找
所以我們必須在Podfile文件中加入查找源

    #我們自己的私有spec倉庫的地址
source 'https://github.com/Maoyis/LocalPod.git'  
#官方倉庫的地址
source 'https://github.com/CocoaPods/Specs.git' 
屏幕快照 2017-05-18 下午8.49.21.png

<h3 id="1.8">更新維護(hù)podspec</h3>

  1. 添加新文件到Classes, 修改對應(yīng)的podspec配置

  2. 驗(yàn)證配置無誤

     $pod lib lint
    
  3. 更新demo調(diào)用(非必要影響步驟)
    pod update

  4. 提交到遠(yuǎn)端代碼托管服務(wù)器

     $ git add .
     $ git commit -m"new version"
     $ git push origin master
     # 打上新tag
     $ git tag -m"version 1.0.1" "1.0.1"
     $ git push --tags
    
  5. 提交本地pod倉庫

     $ pod repo push QXSpecRepo MyLibrary.podspec
    

<h2 id="2"> 移除本地倉庫</h2>

    # pod repo remove [Private Repo Name]
    $ pod repo remove QXSpecRepo

刪除前:

remove_before.png

刪除后:

MyPodFolder.png

<h2 id="3">移除本地倉庫中的lib.podspec</h2>

前往~/.cocoapods/repos 將其對應(yīng)文件夾文件夾刪除,更新本地倉庫

 $ git add --all .
 $ git commit -m "remove unuseful pods"
 $ git push origin master

<h2 id="4">Trunk發(fā)布自己的Pods</h2>

  1. 注冊Trunk獲取推送資格

     #通過郵箱和用戶名注冊
     #pod trunk register [your mailbox] [your Name] --description='mybook'
     $ pod trunk register youaolanyi@foxmail.com Maoyis --description='mybook'
    
  2. 等到到一份郵件赂蕴,點(diǎn)擊郵件中的鏈接后驗(yàn)證是否可以查到自己信息:

     pod trunk me
    
  3. 完成準(zhǔn)備工作后就可以push spec到cocoapod了

     #在工程根目錄(包含有.podspec)    
     pod trunk push *.podspec
    

pod trunk push 命令會首先驗(yàn)證你本地的podspec文件(是否有錯誤),之后會上傳spec文件到trunk舶胀,最后會將你上傳的podspec文件轉(zhuǎn)換為需要的json文件概说。


上傳結(jié)果
  1. 更新本地repo

     #更新方式有多種,個人覺得這個比較保險
     pod setup
    
  2. 查看本地文件夾(~/.cocoapods/repos/master/Specs)中repo master是否同步了自己的庫

<h2 id="5">參考申明</h2>

  1. 《使用Cocoapods創(chuàng)建私有podspec》
  2. 官方文檔
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚣伐,一起剝皮案震驚了整個濱河市糖赔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轩端,老刑警劉巖放典,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異基茵,居然都是意外死亡奋构,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門拱层,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弥臼,“玉大人,你說我怎么就攤上這事根灯【睹澹” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵箱吕,是天一觀的道長芥驳。 經(jīng)常有香客問我,道長茬高,這世上最難降的妖魔是什么兆旬? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮怎栽,結(jié)果婚禮上丽猬,老公的妹妹穿的比我還像新娘。我一直安慰自己熏瞄,他們只是感情好脚祟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著强饮,像睡著了一般由桌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天行您,我揣著相機(jī)與錄音铭乾,去河邊找鬼。 笑死娃循,一個胖子當(dāng)著我的面吹牛炕檩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捌斧,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼笛质,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捞蚂?” 一聲冷哼從身側(cè)響起妇押,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姓迅,沒想到半個月后舆吮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡队贱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年色冀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柱嫌。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡锋恬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出编丘,到底是詐尸還是另有隱情与学,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布嘉抓,位于F島的核電站索守,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抑片。R本人自食惡果不足惜卵佛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敞斋。 院中可真熱鬧截汪,春花似錦、人聲如沸植捎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽焰枢。三九已至蚓峦,卻和暖如春舌剂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暑椰。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工架诞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人干茉。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像很泊,于是被迫代替她去往敵國和親角虫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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