cocoapods 一

cocoapods有很多值得學(xué)習(xí)的地方,自己也被cocoapods坑了很多次,所以想要認(rèn)真的了解一下cocoapods。一點(diǎn)一點(diǎn)的學(xué)習(xí)吧。

首先,使用cocoapods都是從執(zhí)行pod命令開(kāi)始的,先看看pod命令都干了些什么。

先看看pod命令在哪里

$ where pod

/usr/local/bin/pod

對(duì)應(yīng)的文件找到了,看看這個(gè)文件的內(nèi)容

$ cat /usr/local/bin/pod

#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'cocoapods' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0.a"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
    version = $1
    ARGV.shift
  end
end

load Gem.activate_bin_path('cocoapods', 'pod', version)

這是一個(gè)ruby文件,不先了解ruby是沒(méi)辦法繼續(xù)下去了,先去看看ruby。

1  require 'rubygems'
2
3  version = ">= 0.a"
4
5  if ARGV.first
6     str = ARGV.first
7     str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
8     if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
9       version = $1
10      ARGV.shift
11    end
12  end
13  
14  load Gem.activate_bin_path('cocoapods', 'pod', version)

第一行相當(dāng)于import吧,加了個(gè)什么東西進(jìn)來(lái)

第三行定義了一個(gè)變量version,賦值 ">= 0.a"

第五行的ARGV代表參數(shù),執(zhí)行pod update, ARGV.first就是update

第八行的str =~ /\A_(.*)\z/是正則匹配,應(yīng)該是匹配以 "_" 開(kāi)頭并以 '' 結(jié)尾的字符串,不知道什么時(shí)候會(huì)執(zhí)行到9和10兩句,一般應(yīng)該是不會(huì)

第十四句 Gem.activate_bin_path('cocoapods', 'pod', version)在我的環(huán)境里的返回是

/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/bin/pod

然后

load "/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/bin/pod"

也就是執(zhí)行這個(gè)文件了。這個(gè)文件得好好看看,ruby好多還看不懂,需要頻繁百度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Ruby的更新 檢查Ruby的版本 Mac系統(tǒng)自帶的安裝的了ruby,ruby --version可以查看系統(tǒng)版本...
    蝸牛也有夢(mèng)想閱讀 5,190評(píng)論 0 4
  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo),越來(lái)越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 22,275評(píng)論 0 39
  • CocoaPods 是什么? CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開(kāi)源庫(kù)的工具。CocoaPo...
    朝洋閱讀 25,744評(píng)論 3 50
  • 高一時(shí),老師安排我和一個(gè)叫李健的同學(xué)成了同桌,并叮囑我要多幫助這個(gè)成績(jī)奇差的同學(xué)。當(dāng)我發(fā)現(xiàn)李健從大市場(chǎng)批發(fā)筆記本偷...
    葉塞尼婭閱讀 196評(píng)論 0 0
  • 文/相逢一笑 近日,谷歌的阿爾法圍棋(AlphaGo)與圍棋冠軍李世石之間的博弈引發(fā)廣泛關(guān)注。在預(yù)定的五局博弈中,...
    相逢一笑閱讀 624評(píng)論 0 2