Cocoapods 安裝及使用

它是用 Ruby 寫(xiě)的,并劃分為多個(gè) gem 包。它依賴于 Ruby 環(huán)境。

安裝步驟

1. 更新系統(tǒng) Ruby 環(huán)境

# 這一步驟需要科學(xué)上網(wǎng)
$ sudo gem update --system

# 查看已安裝的 Ruby 版本(最新版本:3.0.6,截止20200430)
$ gem -v

2. 安裝 CocoPods 前先替換鏡像源

默認(rèn)的鏡像資源服務(wù)器被天朝給墻了。所以需要先更換源地址,然后再安裝。

  • 移除原先的 Ruby 源:
$ gem sources --remove https://rubygems.org/
$ gem sources --add https://gems.ruby-china.com/

?? 相關(guān)鏈接:Ruby China 的 RubyGems 鏡像上線

  • 驗(yàn)證新源是否替換成功:
$ gem sources -l
*** CURRENT SOURCES ***

https://gems.ruby-china.com/

3. 安裝 CocoaPods

使用 ruby 的 gem 命令下載并安裝 CocoaPods。

  1. $sudo gem install cocoapods
    備注:以上命令在 Mac OS 系統(tǒng)升級(jí)到 OS X EL Capitan 版本后需要改為 : $ sudo gem install -n /usr/local/bin cocoapods

  2. $ pod setup

使用 CocoaPods 的鏡像索引

所有項(xiàng)目的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs 中。第一次執(zhí)行 pod setup 時(shí),CocoaPods 會(huì)將這些 Podspec 索引文件更新到本地的 ~/.cocoapods/目錄下,該索引文件較大且更新非常緩慢。

將 CocoaPods 設(shè)置成 gitcafe 或者 occhina 鏡像,執(zhí)行索引更新時(shí)會(huì)快很多。

pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update

也可以將以上代碼中的 https://gitcafe.com/akuandev/Specs.git 替換成 http://git.oschina.net/akuandev/Specs.git 即可使用 occhina 上的鏡像。

添加新源時(shí)報(bào)錯(cuò):

?  ~ pod repo add master https://git.coding.net/CocoaPods/Specs.git
[!] To setup the master specs repo, please run `pod setup`.
?  ~ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master

—— 參考自:https://lamjack.github.io/2016/cocoapods-install-and-use/

搜索相關(guān)框架

打開(kāi)終端,輸入以下命令:

pod search 框架名

# 如,搜索網(wǎng)絡(luò)框架 AFNetworking
pod search AFNetworking

鏈接:mac終端命令

移除 trunk 源

如果執(zhí)行 pod 相關(guān)命令時(shí),顯示 CDN 無(wú)法連接、連接超時(shí)之類(lèi)的情況,可以移除 trunk 源,然后在 Podfile 文件中第一行指明依賴庫(kù)的來(lái)源地址,不使用默認(rèn) CDN。

$ pod repo remove trunk

項(xiàng)目中使用:

  1. 創(chuàng)建 Podfile 文件。

    新建 Xcode 項(xiàng)目,在終端里 cd 到項(xiàng)目的主文件夾(就是包含 項(xiàng)目.xcodeproj 的文件)。執(zhí)行命令:

    # 1. 創(chuàng)建 Podfile 文件
    $ pod init
    
    # 2. 編輯 Podfile 文件
    $ vim Podfile
    
  2. 編輯 Podfile 文件。

    執(zhí)行 vim Podfile 命令后,會(huì)打開(kāi)上一步驟創(chuàng)建的 Podfile 文件,你需要通過(guò) vim 編輯此文件,默認(rèn)進(jìn)入命令模式

    編輯 Podfile 文件時(shí),至少需要會(huì)使用的幾個(gè) shell 命令:

    鍵盤(pán)命令 描述
    i input,輸入模式
    ESC 輸入模式退出到命令模式
    shift + : 命令模式下,輸入該鍵盤(pán)組合命令,就會(huì)進(jìn)入末行模式
    wq 末行模式下,輸入 wq ,即 write and quit,保存并退出!
  3. 保存文件后,安裝第三方庫(kù)。
    更新依賴庫(kù),執(zhí)行 pod update(記得cd 到項(xiàng)目主文件下)。
    安裝依賴庫(kù),執(zhí)行 pod install

  4. 安裝完成,此時(shí)項(xiàng)目文件中會(huì)多出 .xcworkspace 文件,以后就通過(guò)它來(lái)打開(kāi)項(xiàng)目。

Podfile 文件示例

# 指明依賴庫(kù)的來(lái)源地址,不使用默認(rèn) CDN
source  '[https://github.com/CocoaPods/Specs.git](https://github.com/CocoaPods/Specs.git)'

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# 屏蔽所有第三方框架警告
inhibit_all_warnings!    

target 'ProjectName' do

  # Uncomment this line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for ProjectName

  # 網(wǎng)絡(luò)庫(kù)
  pod 'AFNetworking'
  pod 'YTKNetwork'
  pod 'SDWebImage'
  pod 'Reachability', '~> 3.2'

  # 服務(wù)類(lèi)
  pod 'QQ_XGPush'
  pod 'Bugly'

  # UI
  pod 'Masonry'
  pod 'MBProgressHUD'
  pod 'MJRefresh'
  pod 'EAIntroView'
  pod 'SDCycleScrollView'
  pod 'DZNEmptyDataSet'
  pod 'XLForm'
  pod 'SHSPhoneComponent'
  pod 'BEMCheckBox'
  pod 'SCLAlertView-Objective-C'

  # 工具組件類(lèi)
  pod 'ChameleonFramework'
  pod 'FDFullscreenPopGesture'
  pod 'IQKeyboardManager'
  pod 'YYKit'
  pod 'UIAlertController+Blocks'
  pod 'LBXScan/LBXNative'
  pod 'LBXScan/UI'
  pod 'UITableView+FDTemplateLayoutCell'

end

target 'ProjectNameTests' do
  inherit! :search_paths
end

"Podfile" 52L, 999C

More:

Podfile 版本號(hào)含義:

= version 要求版本大于或者等于version,當(dāng)有新版本時(shí),都會(huì)更新至最新版本
< version 要求版本小于version,當(dāng)超過(guò)version版本后,都不會(huì)再更新
<= version 要求版本小于或者等于version,當(dāng)超過(guò)version版本后,都不會(huì)再更新
~> version 比如 version=1.1.0 時(shí),范圍在[1.1.0, 2.0.0)。注意2.0.0是開(kāi)區(qū)間,也就是不包括2.0.0。

常用命令 Cheatsheet

以下是我整理的一份 Cocoapods 常用命令。

###### 安裝 Cocoapods ######

# 更新 gem 版本
$ sudo gem update --system

# 查看已安裝的 Ruby 版本
$ gem -v

# 替換 Ruby 源
$ gem sources --remove [https://rubygems.org/](https://rubygems.org/)
$ gem sources -add [https://gems.ruby-china.com/](https://gems.ruby-china.com/)

# 查看驗(yàn)證鏡像源
$ gem sources -l

# 卸載 Cocoapods
$ sudo gem uninstall cocoapods

# 重新安裝 Cocoapods 到指定目錄
$ sudo gem install cocoapods -n /usr/local/bin

# 查看當(dāng)前 Cocoapods 版本
$ pod --version

# 更新本地的 Cocoapods 列表
$ pod repo update

# 移除 trunk 源
$ pod repo remove trunk

###### 項(xiàng)目中使用 ######

# 搜索框架
$ pod search 框架名

# 終端導(dǎo)航到項(xiàng)目目錄下
$ cd [Project]

# 創(chuàng)建 Podfile 文件
$ pod init

# 編輯 Podfile 文件
$ vim Podfile

# 安裝
$ pod install

# 更新所有依賴的開(kāi)源庫(kù)
$ pod update
$ pod install --no-repo-update
$ pod update --no-repo-update

# 查看依賴庫(kù)版本信息
$ pod install --verbose --no-repo-update

常見(jiàn)錯(cuò)誤

錯(cuò)誤 1

Error fetching http://ruby.taobao.org/:
bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

解決方案:把安裝流程中 gem sources -a http://ruby.taobao.org/ 改為 gem sources -a https://ruby.taobao.org/

錯(cuò)誤 2

ERROR:  While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod

解決方案:蘋(píng)果系統(tǒng)升級(jí)OS X EL Capitan后會(huì)出現(xiàn)的插件錯(cuò)誤,將安裝流程安裝CocoaPods 的 (1) sudo gem install cocoapods ——>改為 sudo gem install -n /usr/local/bin cocoapods 即可。

錯(cuò)誤 3

ERROR:The dependency is not used in any concrete target
The dependency AFNetworking is not used in any concrete target

解決方案:

  1. 安裝cocoapods的預(yù)覽版本

    sudo gem install cocoapods --pre
    
  1. 修改Podfile格式

    platform :ios, '8.0'
    
    target 'MyApp' do
    
    pod 'AFNetworking', '~> 2.6'
    pod 'ORStackView', '~> 3.0'
    
    end
    

    *里面的 MyApp 記得替換為自己攻城里面的target。

  1. 更新pod

    pod install / pod update
    

錯(cuò)誤 4

error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

SSL證書(shū)錯(cuò)誤,解決方案參考:https://gems.ruby-china.org/

vim ~/.gemrc  # 配置該文件,關(guān)閉SSL驗(yàn)證

文件如下:

---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://gems.ruby-china.org/
:ssl_verify_mode: 0   # 新增此處代碼
:update_sources: true
:verbose: true

錯(cuò)誤 5

RPC failed; curl 18 transfer closed with outstanding read data remaining

解決方案,增加緩沖區(qū)內(nèi)存:

git config http.postBuffer 524288000

錯(cuò)誤 6

Xcode 9.3 下運(yùn)行 pod init 報(bào)錯(cuò):

Error

RuntimeError - [Xcodeproj] Unknown object version.
/usr/local/lib/ruby/gems/2.4.0/gems/xcodeproj-1.5.2/lib/xcodeproj/project.rb:217:in `initialize_from_file'
/usr/local/lib/ruby/gems/2.4.0/gems/xcodeproj-1.5.2/lib/xcodeproj/project.rb:102:in `open'
/usr/local/lib/ruby/gems/2.4.0/gems/cocoapods-1.3.1/lib/cocoapods/command/init.rb:41:in `validate!'
/usr/local/lib/ruby/gems/2.4.0/gems/claide-1.0.2/lib/claide/command.rb:333:in `run'
/usr/local/lib/ruby/gems/2.4.0/gems/cocoapods-1.3.1/lib/cocoapods/command.rb:52:in `run'
/usr/local/lib/ruby/gems/2.4.0/gems/cocoapods-1.3.1/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

解決方法:安裝Cocoapods預(yù)覽版本:

sudo gem install cocoapods --pre

參考:RuntimeError - [Xcodeproj] Unknown object version.

錯(cuò)誤 7

pod update 報(bào)錯(cuò),(Gem::GemNotFoundException):

$ pod update
Traceback (most recent call last):
    2: from /usr/local/bin/pod:23:in `<main>'
    1: from /usr/local/Cellar/ruby/2.6.0_1/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
/usr/local/Cellar/ruby/2.6.0_1/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)

解決方案:

# 更新 gem 版本
sudo gem update --system

# 卸載 cocoapods
gem uninstall cocoapods

# 重新安裝 cocoapods 到指定目錄
sudo gem install cocoapods -n /usr/local/bin

默認(rèn)情況下,安裝 cocoapods 時(shí)(sudo gem install cocoapods)會(huì)被安裝到 /usr/bin 目錄下,但是蘋(píng)果為了系統(tǒng)安全,該目錄禁止任何寫(xiě)入,root 用戶也不能。

參考

最后編輯于
?著作權(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ù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,653評(píng)論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,063評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,835評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,235評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,459評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,819評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,004評(píng)論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,257評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,676評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,937評(píng)論 1 288
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,717評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,003評(píng)論 2 374

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

  • CocoaPods作用:集成與更新第三方SDK。 因?yàn)楦耂DK的時(shí)候失敗了,沒(méi)辦法只好重裝。 一. 1.先卸載老...
    1d5cb7cff98d閱讀 948評(píng)論 0 0
  • 簡(jiǎn)介 CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開(kāi)源代碼的工具,使用CocoaPods可以節(jié)省設(shè)置和更新第...
    流火緋瞳閱讀 664評(píng)論 0 0
  • 喬遷校區(qū)破天荒,大包小包摞一摞; 破口大罵畢業(yè)生,啥味兒啊嗆暈人。 男生說(shuō),“女生是同類(lèi)?不敢想象——”,女...
    塵渺凡閱讀 189評(píng)論 0 1
  • 那年夏天家里裝了空調(diào),一打開(kāi),涼爽極了。老爸盯著呼呼轉(zhuǎn)動(dòng)的電表,心疼的說(shuō):費(fèi)電太厲害,都出去逛逛吧,睡覺(jué)的時(shí)候再用...
    3bd22d417c8b閱讀 236評(píng)論 0 0
  • 友情是那些年里,薛跳跳從不嘲笑丫頭的第六根手指頭,丫頭也從沒(méi)嫌棄過(guò)薛跳跳的臃腫。 人這一生有多短。風(fēng)一吹,青絲就...
    薛瘦脫閱讀 2,196評(píng)論 10 36