cocoapods創(chuàng)建私有倉庫

利用cocoapods來創(chuàng)建私有倉庫步驟
  • 1.創(chuàng)建一個管理私有倉庫的容器
  • 2.制作私有倉庫
  • 3.驗證私有倉庫并加入到第一步創(chuàng)建的容器中

創(chuàng)建私有倉庫容器

為什么要創(chuàng)建一個私有倉庫容器
打開終端進(jìn)入用戶目錄 cd ~/.cocoapods可以寄看到以下信息

DB7EA5BD-FF41-445C-91CC-89FCD2869A30.png

進(jìn)入到repos下的repos下的master再往下找,可以看到一些我們我們熟悉的東西
5637D7FC-7552-46D6-95BE-C51AE9DA890A.png

這個倉庫下存儲了依托在cocoapods的第三庫的一個索引xxx.podspec.json(第二步所對應(yīng)的json文件),cocoadpoads通過這個索引下載第三方代碼
說到這里大家應(yīng)該差不多明白了創(chuàng)建一個容器的原因了,就如官方工作原理一樣,在安裝cocoapods的時候,把當(dāng)前依托在coocapod的第三庫的一個索引文件下載到本地,以后只需要進(jìn)行增量更新即可。如果每次安裝第三庫的時候都去遠(yuǎn)端服務(wù)器去查找podfile中的每個依賴,服務(wù)器的壓力太大,客戶端的速度慢。私有倉庫也是同樣的道理
原因說了現(xiàn)在來講如何創(chuàng)建這個容器,很簡單 --pod repo add name url
以github為例,在github上建立一個倉庫 ,把url換成該倉庫的地址,name換成你自己想取的名字即可,實質(zhì)上就是git remote set-url 本地和遠(yuǎn)程關(guān)聯(lián)起來。
pod repo add JSSpec https://github.com/jsonsnow


創(chuàng)建私有倉庫

通過cocoapods的一個工具快速生成一些配置文件
pod lib create XXX


4E1779D1-8C80-4C2C-B0EE-E658192D1C01.png

查看生成的podspec文件

#
# Be sure to run `pod lib lint CLLTest.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'CLLTest'
  s.version          = '0.1.0'
  s.summary          = 'A short description of CLLTest.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/jsonsnow/CLLTest'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'jsonsnow' => '1183010734@qq.com' }
  s.source           = { :git => 'https://github.com/jsonsnow/CLLTest.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'CLLTest/Classes/**/*'
  
  # s.resource_bundles = {
  #   'CLLTest' => ['CLLTest/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

其中s.source_files = 'CLLTest/Classes/*/' ,就是pod為追蹤的文件,在該目錄下的文件都會隨著pod的發(fā)版而發(fā)布出去,對應(yīng)的Xcode位置如下圖

ADF11C11-F0B4-45F3-A928-5EDA3BE873A9.png

這部分內(nèi)容很多,但通過cocoapods官方模板,對于一般工程往往就可以直接進(jìn)行第三部了--驗證和加入到自己的創(chuàng)建


驗證私有倉庫并加入到第一步創(chuàng)建的容器
推送代碼到遠(yuǎn)端

當(dāng)我們?yōu)樽约旱膒od添加了代碼后,與一個遠(yuǎn)端地址關(guān)聯(lián)起來,把本地代碼推送到遠(yuǎn)端后,就可以進(jìn)行驗證了

git remote set origin url
git add .
git commit -m ""
git push origin master

需要注意的是pod是通過tag來管理版本的因此我們還需要為工程打上tag

git tag 0.0.1
git push origin 0.0.1

tag一般和podspec中的version一致

驗證倉庫

pod lib lint(需要在當(dāng)前.podsepc目錄下)進(jìn)行本地驗證
驗證通過后
pod repo push xx_repo xxx.podspec,驗證并發(fā)布
xx_repo:第一步創(chuàng)建的倉庫管理容器
xxx.podspec:待發(fā)布的倉庫


整個過程大致如上所述,列舉一些遇到的問題
pod lib create 時候出現(xiàn)如下錯誤

lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require': cannot load such file -- colored2 (LoadError)  

解決方法

sudo gem install colored2
sudo gem update --system

包含私有倉庫的podfile文件需要加上第一步容器的地址和cocoapods的
source 'https://github/jsonsnow'
source 'https://github.com/CocoaPods/Specs.git'


pod lib lint 成功 但是pod repo push xx_repo xxx.podspec失敗一般是tag混亂導(dǎo)致
比如有私有倉庫A和B,B依賴A,A在repo中有兩個tag0.0.1,和0.0.2,但A遠(yuǎn)程只有一個tag0.0.1,再驗證的時候cocoapods從倉庫容器得到的是0.0.2但是A的遠(yuǎn)端卻找不到這個tag,因此會出錯


一般我們在制作pod的時候,如果依賴本地的pod,往往會在podfile這樣寫

pod 'xxxx',:path => ’../xxx‘

當(dāng)發(fā)版的時候需要去掉后面path部分,不然驗證也不會通過,驗證的時候會根據(jù)podfile文件來創(chuàng)建一個工程,指定path會導(dǎo)致依賴找不到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容