【软件】Cocoapods安装

一、CocoaPods简介

CocoaPods是专门为iOS工程提供第三方依赖库的管理工具,通过CocoaPods,我们可以更方便地管理每个第三方库的版本,而且不需要我们做太多的配置,就可以直观、集中和自动化地管理我们项目的第三方库。

CocoaPods将所有依赖的库都放在一个名为Pods的项目下,然后让主项目依赖Pods项目。然后,我们编码工作都从主项目转移到Pods项目。Pods项目最终会编译为一个libPod-项目名.a静态库,主项目依赖于这个静态库。

对于资源文件,CocoaPods 提供了一个名为 Pods-resources.sh 的 bash 脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。

CocoaPods 通过一个名为 Pods.xcconfig 的文件来在编译时设置所有的依赖和参数。

CocoaPods是用 Ruby 写的,并由若干个 Ruby 包 (gems) 构成的。在解析整合过程中,最重要的几个 gems 分别是: CocoaPods/CocoaPods, CocoaPods/Core, 和 CocoaPods/Xcodeproj

二、CocoaPods的核心组件

  • CocoaPods/CocoaPod
    这是一个面向用户的组件,每当执行一个 pod 命令时,这个组件都将被激活。该组件包括了所有使用 CocoaPods 涉及到的功能,并且还能通过调用所有其它的 gems 来执行任务。

  • CocoaPods/Core
    Core 组件提供支持与 CocoaPods 相关文件的处理,文件主要是 Podfilepodspecs

  • Podfile
    Podfile 是一个文件,用于定义项目所需要使用的第三方库。该文件支持高度定制,你可以根据个人喜好对其做出定制。更多相关信息,请查阅 Podfile 指南。

  • Podspec
    .podspec 也是一个文件,该文件描述了一个库是怎样被添加到工程中的。它支持的功能有:列出源文件、framework、编译选项和某个库所需要的依赖等。

  • CocoaPods/Xcodeproj
    这个 gem 组件负责所有工程文件的整合。它能够创建并修改 .xcodeproj.xcworkspace 文件。它也可以作为单独的一个 gem 包使用。如果你想要写一个脚本来方便地修改工程文件,那么可以使用这个 gem

三、CocoaPods的安装和使用

1、安装rvm

检查Mac是否安装了rvm,打开终端,输入指令:

rvm -v

  • 如果不存在,则会出现下面的情况:
Last login: Thu Sep 19 08:32:35 on console
bogon:~ wangruifang$ rvm -v
-bash: rvm: command not found

  • 如果存在,则会打印rvm的版本信息:
bogon:~ wangruifang$ rvm -v
rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

如果不存在,先要安装一下,依次输入以下命令:

curl -L get.rvm.io | bash -s stable

上面的安装不了用下面的命令
\curl -sSL https://get.rvm.io | bash -s stable

source ~/.bashrc

source ~/.bash_profile

升级rvm到最新的稳定版本命令:

rvm get stable

2、安装ruby
(1)查询ruby所有可安装的版本信息:
rvm list known

结果如下:

[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.6]
[ruby-]2.5[.5]
[ruby-]2.6[.3]
[ruby-]2.7[.0-preview1]
ruby-head
···

(2)选择一个ruby版本进行安装(2.6.3为最新正式版版本,2.7.0为测试版)
rvm install 2.6.3
// 注意:安装过程中需要两次按下 Enter 键, 第二次按下后需要输入电脑访问密码(不可见,只管输入就行);
// 如果你电脑没有安装Xcode和Command Line Tools for Xcode以及Homebrew 会自动下载安装,建议提前安装这三者.

(3)设置为默认版本
rvm use 2.6.3 --default

3、检查更新ruby版本环境

cocoapods是用gem ruby实现的,想要使用它首先需要有gem ruby的环境。且Mac的OS X系统默认已经可以运行ruby

检查 gem ruby 版本号:

sudo gem -v

更新 gem ruby 版本号:

sudo gem update --system

4、检查更新ruby源
(1)检查ruby源
bogon:~ wangruifang$ gem sources -l 
*** CURRENT SOURCES ***

https://rubygems.org/

(2)替换国内镜像源

之所以要添加国内的 ruby-china源,是因为taobao源已经停止维护了,所以此处替换的是ruby-china源,且尽量确保只有一个。

//移除原有镜像源:
gem sources --remove https://rubygems.org/
//添加国内镜像源
gem sources --add https://gems.ruby-china.com

5、安装CocoaPods
sudo gem install cocoapods

OS X EL Capitan 或 macOS High Sierra System 后改为:

sudo gem install -n /usr/local/bin cocoapods

如果以上安装cocoapads报错
ERROR: While executing gem ... (Gem::FilePermissionError)
更换为下面安装方式

gem install cocoapods --user-install

如果安装了多个Xcode使用下面的命令选择(一般需要选择最近的Xcode版本)

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

设置pod:

pod setup

6、创建一个工程,并创建Podfile配置文件

先用 cd 进入到工程中去,输入指令vim podfile 创建 Podfile 文件,然后按 i 进入到编辑模式来配置 Podfile 文件:

platform :ios, '9.0'
target “target名称” do
pod 'AFNetworking', '~> 3.1.0'
end

Esc 退出编辑,按 Shift +冒号,输入 wq 退出文件编辑,然后下载 Podfile 文件内的第三方,执行命令:

pod install

7、pod命令
# 第一次使用安装框架    //只用安装一次,之后使用 添加删除都用 pod update --no-repo-update 
$ pod install
# 安装框架,不更新本地索引,速度快
$ pod install --no-repo-update 
# 今后升级、添加、删除框架,或者框架不好用
$ pod update
# 更新框架,不更新本地索引,速度快
$ pod update --no-repo-update 
# 搜索框架
$ pod search XXX# 
帮助
$ pod --help

四、CocoaPods使用过程中遇到的问题

1、去除CocoaPods相关库警告
  • 去除所有警告,在platform :ios, ‘x.0’ 的后面加入这句:
inhibit_all_warnings!

  • 对单个消除警告:
pod 'MJExtension','~>3.0.15.1',:inhibit_warnings => true

2、[!] Unable to find a pod with name, author, summary, or description matching xxx.
  • 解决办法:
    删除~/Library/Caches/CocoaPods目录下的search_index.json文件
rm ~/Library/Caches/CocoaPods/search_index.json

3、[!] CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/2/e/7/YTKNetworkExtension/0.1.0/YTKNetworkExtension.podspec.json, error: Failed to open TCP connection to raw.githubusercontent.com:443 (Connection refused - connect(2) for "raw.githubusercontent.com" port 443)
  • 问题原因:
    CocoaPods 1.8+将CDN切换为默认的spec repo源,并附带一些增强功能!CDN支持最初是在1.7版本中引入的,最终在1.7.2中完成。 它旨在大大加快初始设置和依赖性分析。

  • 解决办法:

  1. podfile文件中添加source源:
    source 'https://github.com/CocoaPods/Specs.git
  2. 移除 trunk
pod repo remove trunk

五、CocoaPods卸载

1.卸载老版本cocopods

sudo gem uninstall cocoapods

2.查看本地安装过的cocopods相关东西

 gem list --local | grep cocoapods

显示如下:

cocoapods (1.0.1)

cocoapods-core (1.0.1)

cocoapods-deintegrate (1.0.1)

cocoapods-downloader (1.1.1)

cocoapods-plugins (1.0.0)

cocoapods-search (1.0.0)

cocoapods-stats (1.0.0)

cocoapods-trunk (1.0.0)

cocoapods-try (1.1.0)

然后使用命令逐个删除

sudo gem uninstall cocoapods-core
sudo gem uninstall cocoapods-deintegrate

如果怕删不干净有残留的话可以找到 .cocopods 文件(隐藏文件)删掉就好

看不到该文件可以在终端输操作

显示隐藏文件 :
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder

隐藏文件 :
defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder

删除完之后接下来安装RVM(如果以前安装过的话需要找到.rvm然后删掉 和.cocopods同理)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容