iOS 建立自己本地cocoapod庫

目錄

<h2 id=1>創建與維護</h2>

下面詳細分為7個步驟來學習和掌握這項技能

<h3 id="1.1">創建并設置一個私有的Spec Repo</h3>

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

  2. 在本地創建Spec Repo

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

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

MyPodFolder.png

PS: 如果有其他合作人員共同使用這個私有Spec Repo的話在他有對應Git倉庫的權限的前提下執行相同的命令添加這個Spec Repo即可。

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

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

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

  2. 跳轉到一個用來保存自己庫的文件夾下來創建一個lib(推薦單獨創建一個專門用來保存自己的庫),并在該目錄執行

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

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

是否創建一個demo

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

是否進行UI測試

類的前綴

然后就會在該目錄創建一個lib

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

     $cd Example
     $pod update
    

此時再展開工程會發現文件已經添加到了項目中,但卻在開發模式pod文件加下(Development Pods)。

developPod.png

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

官方教程

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

<h3 id="1.4">配置podspec與驗證</h3>

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

     s.name             = 'QXFullGestureView ' ##名字必須與libname相同
     s.version          = '0.1.0'     #版本必須為0.0.0格式
     s.summary          = 'all gesture view' #關于庫的一個簡短描述
     s.description      = <<-DESC
     TODO: 備注文字(較長描述)
                                 DESC
     #是否支持arc
     s.requires_arc = true
     #文件主頁
     s.homepage         = 'https://github.com/Maoyis/QXFullGestureView '
     #開源協議
     s.license          = { :type => 'MIT', :file => 'LICENSE' }
     #作者信息
     s.author           = { 'Maoyis' => 'xxxxxx@qq.com' }
     #源文件所在網絡路徑
     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. 完成上面主要配置(并非所有配置)后,驗證一下這個文件是否可用。執行:

     #測試podspec檢查是否存在問題
     $ pod lib lint 
     //通過結果
      -> 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. 準備:創建一個項目(如果沒pod lib創建或沒創建demo 否則跳過步驟1)配置Podfile

platform :ios, '7.0'

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

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


pod install
  1. 編寫代碼,導入lib驗證是否可以正常使用

     pod lib lint
    

由于人處于開發階段,此時再展開工程會發現文件已經添加到了項目中,但卻在開發模式Development Pods文件夾下(Development Pods)。

  1. 將lib提交到遠端倉庫

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

     $ git tag -m "release 0.1.0" "0.1.0"
     $ git push --tags     #推送tag到遠端倉庫   
    

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

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

  1. 提交podspec到自己的Spec Repo

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

執行完畢后本地查看本地倉庫就可以看到對應的 文件夾/版本文件夾/上傳的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默認不會去本地Pod文件夾查找lib,只會默認在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">更新維護podspec</h3>

  1. 添加新文件到Classes, 修改對應的podspec配置

  2. 驗證配置無誤

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

  4. 提交到遠端代碼托管服務器

     $ 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 將其對應文件夾文件夾刪除,更新本地倉庫

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

<h2 id="4">Trunk發布自己的Pods</h2>

  1. 注冊Trunk獲取推送資格

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

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

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

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


上傳結果
  1. 更新本地repo

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

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

  1. 《使用Cocoapods創建私有podspec》
  2. 官方文檔
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容