CocoaPods安装、使用、提速、问题解决

2020-02-16 16:15:27

参考地址 CocoaPods安装、使用、提速、问题解决

环境

macOS 10.15
Xcode 11.1

目录

  • 安装
  • 使用
  • 提速
  • 遇到的问题
  • 参考

一、CocoaPods安装

CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。mac OS默认已经可以运行Ruby了,但是CocoaPods需要Ruby版本大于2.2.2。

1、安装rvm

rvm可以让你拥有多个版本Ruby,且可以在多个版本之间自由切换,如已安装跳到第2步(rvm -v查看是否安装)

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

//需要等一会

$ source ~/.bashrc

$ source ~/.bash_profile

等待终端加载完毕后输rvm -v查看,如显示版本则安装成功

rvm

2、安装Ruby

CocoaPods需要Ruby版本大于2.2.2,如已安装跳到第3步(ruby -v查看版本)

//列出ruby可安装的版本信息rvm list known

rvm install 2.4  //安装一个ruby版本这里一定要设置为默认版本

rvm use 2.4--default
3、更换Gem的源

Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如http://rubygems.org/)源来查找、安装、升级和卸载软件包。

// 1.移除掉原有的源(服务器在国外,速度较慢)- gem sources --remove https://rubygems.org/taobao Gems 已停止维护,现在有ruby-china提供镜像服务,如果安装了则删除- gem sources --remove https://ruby.taobao.org/    // 2.等有反应之后再敲入以下命令- gem sources -a https://gems.ruby-china.com// 3.验证是否替换成功- gem sources -l
4、更新升级Gem版本

Gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案升级Gem。

- sudo gem update --system

或者mac OS 10.11之后
sudo gem update -n /usr/local/bin —system
5、安装CocoaPods

// 如果之前有sudo gem uninstall cocoapods (移除原来的cocoapods)// 安装CocoaPods(OS X 10.11以前)- sudo gem install cocoapods// 安装CocoaPods(10.11后苹果升级了安全策略)- sudo gem install -n /usr/local/bin cocoapods
6、更换repo镜像为国内服务器(这一步省了吧,公司网络不好,直接走手机4G很快)

所有的项目的Podspec文件都托管在https://github.com/CocoaPods/Specs第一次执行 pod setup时, CocoaPods会将这些podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有80M左右。所以第一次更新时非常慢。
一个叫akinliu的朋友在gitcafe和oschina上建立了CocoaPods索引库的镜像,因为gitcafe和oschina都是国内的服务器,所以在执行索引更新操作时,会快很多。如下操作可以将CocoaPods设置成使用gitcafe镜像:

// 1.移除原有服务器- pod repo remove master
如报错repo master does not exist 不必理会// 2.添加境内服务器(GitCafe 的服务已经从 2016 年 3 月 2 日 起合并至 Coding.net,2016 年 5 月 31 日正式关停服务)- pod repo add master https://gitcafe.com/akuandev/Specs.git- pod repo add master http://git.oschina.net/akuandev/Specs.git(开源中国较慢)- pod repo add master https://git.coding.net/CocoaPods/Specs.git

如果报To setup the master specs repo, please run 'pod setup'- pod repo update
换一种方式吧,方式如下


在git配置ok的前提下,直接将文件clone一份到本地。然后将文件夹名改为master,并将其拖到/Users/用户名/.cocoapods/repos目录下即可。

也可以直接用一条命令一步到位,直接跳过pod setup

git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master

pod setup 官方解释

7、 pod setup

pod setup

如报错

sa.png

执行

sudo xcode-select -switch /Applications/Xcode9.1.app (Xcode 目录)

如果失败则

pod repo remove master

pod setup

// 如果需要更新的话

pod repo update// 查看版本pod --version

二、CocoaPods使用

创建个名为Podfile文件,注意文件名大小写!!

cd 工程目录// 搜索pod search + 库名
vim Podfile// 写完之后安装就ok 
 :wq 保存退出
pod install// 要更新的话pod update
Podfile文件编辑时,第三方库版本号的各种写法

pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

platform :ios, '8.0'# 在Swift中,Podfile的第一句必须写上use_frameworks! target 'Test' dopod 'AFNetworking', '~> 3.1.0'end

三、pod install提速

每次执行pod installpod update的时候,cocoapods都会默认更新一次spec仓库。这是一个比较耗时的操作。在确认spec版本库不需要更新时,给这两个命令加一个参数跳过spec版本库更新,可以明显提高这两个命令的执行速度。

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update

四、遇到的问题

4.1ETIMEDOUT: Operation timed out - connect(2) (https://ruby.taobao.org/specs.4.8.gz)

链接超时根本更换不了,  可能公司网络的问题,经理说网络有限制,我走手机3G好用了。。。

4.2Error installing cocoapods:  activesupport requires Ruby version >= 2.2.2.

安装 RVM baby 版本管理器 
curl -L get.rvm.io | bash -s stable
当出现In case of problems: https://rvm.io/helpandhttps://twitter.com/rvm_io
执行 
source ~/.bashrc
source ~/.bash_profile  
测试是否安装正常
rvm -v
会提示
rvm 1.27.0 (latest) by Wayne E. Seguin, Michal Papis[https://rvm.io/]用RVM升级Ruby查看当前ruby版本
ruby -v
rvm list known
会提示版本
安装ruby2.2.2吧
执行
rvm install 2.2.2这里如果出现如下提示(没有直接跳过)Requirements installation failed with status: 1.执行下面的命令 卸载home-brew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"完事之后再次执行
rvm install 2.2.2完事之后安装cocoapods吧

2016.3.10日更新

4.3You can try adding it manually in ~/.cocoapods/repos or via pod repo add.

可能安装多个Xcode或重装导致的

解决方案

sudo xcode-select -switch /Applications/Xcode7.3.1.app // 后面的路径直接拖就行
4.4 Pods written in Swift can only be integrated as frameworks; add use_frameworks! to your Podfile or target to opt into using it. The Swift Pods being used are: ReactiveCocoa and Result

解决方案

增加use_frameworks!就好了
4.5 更新pod后出现library not found for - xxx

遇到的情况为找不到JCore1.1.3

解决方案

pod.png

在build settings搜索缺失的库,删除就好了,因为JCore更新到1.1.5了

2017.11.26日更新

4.6  connect returned=1 errno=0 state=SSLv3 read servercertificateB:certificate verify failed (https://ruby.taobao.org/specs.4.8.gz)

解决方案

taobao Gems源停止维护,现由ruby-china提供镜像服务,更改源
帖子https://ruby-china.org/topics/29250

4.7 /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.3.1/lib/cocoapods/command.rb:129:in `verify_minimum_git_version!': [!] You need at least git version 1.8.5 to use CocoaPods (Pod::Informative)

解决方案

sudo xcode-select -switch /Applications/Xcode9.1.app (Xcode 目录)
4.8 其他莫名奇妙的问题

$ sudo gem update --system
$ sudo gem install cocoapods
$ pod setup

2018.8.9日更新

macOS 10.13.6
Xcode 9.4.1

4.9 pod install报错:ArgumentError - Malformed version number string

解决方案

更新一下ruby

查看所有ruby版本
rvm list known

查看当前ruby版本
ruby -v

找到最新的版本更新
rvm install "ruby-2.4.1"

可能需要更细系统版本和Xcode版本

4.10Error running 'requirements_osx_brew_update_system ruby-2.4.1',

解决方案

brew update

4.11curl: (56) LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

解决方案

Xcode 选择好

4.12

While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.

解决方案

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

4.13Error installing AFNetworking

解决方案

网络问题

4.14 升级MacOS系统后

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory

解决方案

升级CocoaPods
sudo gem install -n /usr/local/bin cocoapods --pre
更新本地仓库 (取决于网络)
pod repo update

五、参考

http://www.jianshu.com/p/3086df14ed08
http://blog.csdn.net/fairytale_1/article/details/51850734
http://blog.csdn.net/fly601845/article/details/52152978
http://www.jianshu.com/p/2ef8a38416c4
https://ruby-china.org/topics/29250
https://segmentfault.com/q/1010000005914910
http://www.jianshu.com/p/6e5c0f78200a


  • 2019-12-06 11:01:31

    npm发布包流程详解 有demo

    npm发布包步骤,以及踩过的坑(见红颜色标准): 1.注册npm账号,并完成Email认证(否则最后一步提交会报Email错误) 2.npm添加用户或登陆:npm adduser 或 npm login

  • 2019-12-06 13:16:18

    vue mixins组件复用的几种方式

    最近在做项目的时候,研究了mixins,此功能有妙处。用的时候有这样一个场景,页面的风格不同,但是执行的方法,和需要的数据非常的相似。我们是否要写两种组件呢?还是保留一个并且然后另个一并兼容另一个呢? 不管以上那种方式都不是很合理,因为组件写成2个,不仅麻烦而且维护麻烦;第二种虽然做了兼容但是页面逻辑造成混乱,必然不清晰;有没有好的方法,有那就是用vue的混合插件mixins。混合在Vue是为了提出相似的数据和功能,使代码易懂,简单、清晰。

  • 2019-12-06 13:26:30

    vue的mixins混入合并规则

    混入minxins:分发vue组件中可复用功能的灵活方式。混入对象可以包含任意组件选项。组件使用混入对象时,所有混入对象的选项将混入该组件本身的选项。

  • 2019-12-06 16:50:34

    Intellij idea 如何关闭无用的提示

    Linux:Settings —> Editor —> Inspections —> General —> Duplicated Code Mac:Preferences --> Editor —> Inspections —> General —> Duplicated Code fragment 将对应的勾去掉。

  • 2019-12-09 15:36:56

    神秘的 shadow-dom 浅析,shadow-root

    顾名思义, shadow-dom,直译的话就是 影子dom ?我觉得可以理解为潜藏在黑暗中的 DOM 结构,也就是我们无法直接控制操纵的 DOM 结构。前端同学经常用开发者工具的话,查看 DOM 结构的时候,肯定看到过下面这样的结构:

  • 2019-12-10 11:13:50

    前端实战-基于Nuxt的SVG使用

    虽然我们在日常开发的时候,在使用iview 或者element ui等组件时,通常会包含一些常用icon;但是在面对一些特定的需求时,或者自己想high一下,这些通用的icon并不能很好的满足我们。这个时候我们可能会拿到一些SVG适量图,但是怎么去使用这些矢量图呢。

  • 2019-12-10 11:15:08

    用CSS给SVG 的内容添加样式

    SVG图形的一个最常见用例是图标系统,其中最常用的SVG sprite技术就是使用SVG<use> 元素在文档中任意位置“实例化”图标。 使用<use>元素实例化图标或任何其它的SVG元素或图像,给元素添加样式时经常会碰到一些问题。这篇文章的目的是尽可能给你介绍一些方法来解决:使用<use>引入的内容添加样式受限的问题。 但是在开始之前,我们先快速浏览一下SVG的主要结构和分组元素,然后慢慢进入use的世界中,以及shadow DOM,然后重回CSS的怀抱。我们会逐步讲解为什么给<use>内容添加样式会比较麻烦,以及有什么好的解决方案。

  • 2019-12-10 16:21:05

    display:flex的子元素无法设置宽度

    子元素有个flex-shrink属性,表示在父元素宽度不够的情况下是自动收缩不?0表示不自动收缩,1表示自动收缩;所以将子元素(图片)添加属性:flex-shrink:0;即