Cocoapods 建立本身的公開庫、私有庫

如何建立本身的共有庫

一、註冊Trunkios

trunk須要CocoaPods 0.33版本以上,用pod --versiongit

命令查看版本github

CocoaPods版本json

  • 若是版本低,須要升級:xcode

sudo gen install cocoapods
pod setup

 

  • 查看本身是否註冊過Trunk框架

pod trunk me

沒有註冊過工具

  • 註冊 ui

// 加上--verbose能夠輸出詳細debug信息,方便出錯時查看。
pod trunk register zhangyqyx@163.com "zhangyqyx" --verbose
 
"zhangyqyx" 裏面表明你的用戶名,最好起一個好的名字
zhangyqyx@163.com 表明你的郵箱

 

註冊完成以後會給你的郵箱發個郵件,進入郵箱郵件裏面有個連接,須要點擊確認一下this

  • 註冊成功後能夠再查看一下我的信息pod trunk meurl

查看註冊信息

二、建立一個項目

一、github上建立一個項目

建立項目

二、將項目克隆下來,並添加公開庫文件

添加後的項目目錄

三、建立.podspec

1、cd 到你的項目下

// 注 ZYRunTimeCoT 這個是你框架的名稱
2、pod spec create ZYRunTimeCoT

 

四、編輯.podspec文件

Pod::Spec.new do |s|
  s.name         = "ZYRunTimeCoT"
  s.version      = "0.0.1"
  s.ios.deployment_target = '8.0'
  s.summary      = "簡介"
  s.homepage     = "https://github.com/zhangyqyx/ZYRunTimeCoT"
  s.social_media_url = 'https://www.baidu.com'
  s.license      = "MIT"
  # s.license    = { :type => "MIT", :file => "FILE_LICENSE" }
  s.author       = { "zyq" => "zhangyqyx@163.com" }
  s.source       = { :git => 'https://github.com/zhangyqyx/ZYRunTimeCoT.git', :tag => s.version}
  s.requires_arc = true
  s.source_files = 'runtime/*'
  #s.public_header_files = 'runtime/TFRuntimeManager.h'
 
end

  

接下來說解一下每行代碼的含義

s.name:名稱,pod search 搜索的關鍵詞,注意這裏必定要和.podspec的名稱同樣,不然報錯

s.version:版本號

s.ios.deployment_target:支持的pod最低版本

s.summary: 簡介

s.homepage:項目主頁地址

s.social_media_url:社交網址,這裏我寫的微博默認是百度,若是你寫的是你本身的博客的話,你的podspec發佈成功後會@你

s.license:許可證

s.author:做者

s.source:項目的地址

s.requires_arc: 是否支持ARC

s.source_files:須要包含的源文件

s.public_header_files:公開的頭文件

//其餘

s.resources: 資源文件

s.dependency:依賴庫,不能依賴未發佈的庫,能夠寫多個依賴庫

常見的寫法:

  一、dependency:寫法

s.dependency = 'AFNetworking' , 'SDWebImage'

 

 

  二、source_files: 寫法

'runtime/*'
'runtime/runtime/*.{h,m}'
'runtime/**/*.h'

 

  • '*'表示匹配全部文件

  • '*.{h,m}' 表示匹配全部以.h和.m結尾的文件

  • '**' 表示匹配全部子目錄

 

  三、source: 常見寫法

s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea" }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :commit => "68defea", :tag => 1.0.0 }
s.source = { :git => "https://github.com/zhangyqyx/ZYRunTimeCoT.git", :tag =>#{s.version}}

 

  • commit => "68defea" 表示將這個Pod版本與Git倉庫中某個commit綁定

  • tag => 1.0.0 表示將這個Pod版本與Git倉庫中某個版本的comit綁定

  • tag => s.version 表示將這個Pod版本與Git倉庫中相同版本的comit綁定

 

五、若是前面沒有選擇建立這個LICENSE文件, 建立LICENSE(許可證/受權)文件,此文件必需要有

建立一個文件名字命名爲LICENSE,內容爲:只須要把前面的版權改一下就好了,後面的都同樣

Copyright (c) 2013-2015 ZYRunTimeCoT (https://github.com/zhangyqyx/ZYRunTimeCoT)

 

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.

六、上傳到Git

將包含配置好的 .podspec, LICENSE 的項目提交 Git

 

七、打tag

 給項目打標籤, 標籤號要與podspec文件裏面的一致

//爲git打tag, 第一次須要在前面加一個v
git tag "v0.0.1" // 若是出現錯誤,試一下不加v的狀況   //git tag -a 1.0.0 -m '標籤說明'
//將tag推送到遠程倉庫 git push --tags

 

 

若是咱們的tag打錯了,沒有用的話,咱們應該怎麼刪除呢?

一、查看tags

git tag 就會羅列出咱們全部的tags

二、刪除本地tags

git tag -d + 分支名稱就會刪除本地的分支

三、刪除遠程分支

git push origin :refs/tags/分支名稱 就刪除了遠程分支

如圖

刪除tag

 

八、驗證.podspec文件

// --verbose 若是驗證失敗會報錯誤信息
pod spec lint ZYRunTimeCoT.podspec --verbose

 

若是出現這種警告性的問題

 項目可能同時依賴了本地的framework.a這個時候要在校驗spec文件的時候加參數  --allow-warnings

pod lib lint --allow-warnings

 

出現這種狀況就說明咱們經過了驗證

經過驗證

 

若是出現這種狀況,多是你的那個版本找不到這個文件,

找不到文件

你能夠嘗試 s.source 添加一句 :commit => "68defea"  68defea是你的版本號,如圖

添加版本號

 

9 、發佈

發佈時會驗證 Pod 的有效性,若是你在手動驗證 Pod 時使用了 --use-libraries 或 --allow-warnings 等修飾符,那麼發佈的時候也應該使用相同的字段修飾,不然出現相同的報錯。

// --use-libraries --allow-warnings
pod trunk push ZYRunTimeCoT.podspec

 

 

出現這種狀況就說明你發佈成功了,等待人家審覈就好了

發佈成功

十、驗證倉庫

pod search ZYRunTimeCoT.

 

你可能會出現這種狀況錯誤

 

解決 ,刪除文件路徑,從新生成

rm ~/Library/Caches/CocoaPods/search_index.json
pod setup

 

若是仍是不行,估計是在你的項目還在審覈中,你能夠經過其餘輔助手段去驗證;

一、執行 pod trunk me 命令,看看有沒有你的庫

查看庫信息

二、在CocoaPod管理全部第三方庫(CocoaPod管理的庫)中所搜一下(這個也有延時,若是搜索到就出現這樣的結果,展現的是上一個集成庫的搜索結果)

搜索結果

共有庫的建立這裏就結束了。

 

建立私有庫 (私有庫不須要註冊Trunk

一、建立一個私有的項目(能夠是公司本身的git管理工具、也能夠是碼雲上的),建立方法同公共庫的第二步

 

二、建立.podspec

方法同公共庫建立的第三步

 

三、編輯.podspec文件

方法同公共庫建立的第四步

 

四、上傳到Git

方法同公共庫建立的第六步

 

五、打tag

方法同公共庫建立的第七步

 

六、驗證.podspec文件

方法同公共庫建立的第八步

 

七、添加一個私有庫並和項目地址作綁定 (MyRepo用來 存放全部私有庫 各個版本的描述文件)

pod repo add MyRepo https://github.com/zhangyqyx/ZYRunTimeCoT.git

 

//查看在 Finder 目錄cd  ~/.cocoapods/repos, 能夠發現增長了一個 MyRepo 的儲存庫

 

 

八、向私有的庫裏添加podspec文件(將咱們的代碼倉庫的描述信息,push 到咱們的版本倉庫中)

  先更新下咱們的版本庫 pod repo update MyRepo  (要否則會報錯)

pod repo push MyRepo xxxx.podspec

 

 

九、新建一個項目進行驗證 

xcode新建項目 在podfile中添加

pod 'ZYRunTimeCoT', '~> 0.0.1'

//若是提示 'unable to find a specification for'

//須要在podfile文件中添加源地址(私人pod庫指明你的版本庫地址) source 'https://git.oschina.net/baiyingqiu/MyRepo.git' //**注意**是版本庫的地址,而不是代碼庫的地址, //如有還使用了公有的pod庫,須要把公有庫地址也帶上 source 'https://github.com/CocoaPods/Specs.git

 

 

 

最後的Podflie文件變成這個樣子

source ‘https://github.com/CocoaPods/Specs.git’
source ‘https://git.oschina.net/baiyingqiu/MyRepo.git’
 
platform :ios, '8.0'
 
target ‘MyPodTest’ do
use_frameworks!
 
pod 「AFNetWorking」 #公有庫
pod ‘ZYRunTimeCoT’ #咱們的私有庫
end

執行 pod install 命令時:

  • 會拉取遠程 Podflie 中source標記 版本庫 到本地的repos 文件夾中
  • 在 版本庫 中搜索咱們pod ‘ZYRunTimeCoT 的 ZYRunTimeCoT.podspec 文件。
  • 根據 ZYRunTimeCoT.podspec 文件中描述的源碼地址下載並整合到項目中
相關文章
相關標籤/搜索