美文网首页
CocoaPods安装指南

CocoaPods安装指南

作者: 林安530 | 来源:发表于2017-11-22 08:08 被阅读15次

    这两年因为升级系统、更换电脑,帮助同事等前前后后安了4次CocoaPods,整理了一下CocoaPods的安装流程及过程中遇到的一些坑,算是比较全面,覆盖了所有可能碰到的问题。(taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务.)

    CocoaPods是什么?

    CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。
    CocoaPods 背后的理念主要体现在两个方面。
    首先,在工程中引入第三方代码会涉及到许多内容。对开发者来说,工程文件的配置会让人很沮丧。在配置 build phases 和 linker flags 过程中,会引起许多人为因素的错误。CocoaPods 简化了这一切,它能够自动配置编译选项。
    通过 CocoaPods,可以很方便的查找到新的第三方库。
    CocoaPods是用 Ruby 写的,想要使用它首先要有Ruby环境.
    RubyGems简称gems,是一个用于对Ruby组件进行打包的Ruby打包系统

    一. 流程

    第一步:安装rvm

    不管需不需要升级ruby,rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。如果已经安装过跳到第2步(rvm -v 查看是否安装)

    $ curl -L get.rvm.io | bash -s stable
    
    //需要等一会
    
    $ source ~/.bashrc
    
    $ source ~/.bash_profile
    

    等待终端加载完毕,后输入

    rvm -v
    
    image

    如果能显示版本好则安装成功了。

    第二步:安装ruby

    CocoaPods目前安装需要Ruby的版本大于2.2.2,不然会报错:Error installing pods: activesupport requires Ruby version >= 2.2.2。目前Mac系统默认自带是2.0,所以需要升级。

    查看已安装的ruby:

    rvm list
    //ruby -v  //也可以查看ruby版本
    

    如果已安装版本大于2.2.2,直接到第3步。

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

    rvm list known
    
    rvm install 2.2.2  //安装一个ruby版本
    
    image

    这里一定要设置为默认版本

    rvm use 2.2.2 --default
    

    第三步:更换源

    我们需要来修改更换源(由于国内被墙)所以要把源切换至 ruby-china 在终端执行以下命令

    网上文章大都是这面这种:

    $ sudo gem update --system
    
    $ gem sources --remove https://rubygems.org/
    

    等有反应之后再敲入以下命令

    $ gem sources -a https://ruby.taobao.org/
    

    这里是个大坑:会报错 _connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://ruby.taobao.org/specs.4.8.gz)
    这是因为taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务,正确的操作是:

    $ sudo gem update --system
    
    $ gem sources --remove https://rubygems.org/
    
    $ gem sources --remove https://ruby.taobao.org/       //如果安装了淘宝的镜像
    

    等有反应之后再敲入以下命令

    gem sources -a https://gems.ruby-china.org/
    

    为了验证你的Ruby镜像是并且仅是ruby-china,可以用以下命令查看:

    $ gem sources -l
    

    只有在终端中出现下面文字才表明你上面的命令是成功的:

    *** CURRENT SOURCES ***
    
    https://gems.ruby-china.org/
    

    确保只有 gems.ruby-china.org

    第四步:安装CocoaPods

    sudo gem install -n /usr/local/bin cocoapods
    (苹果系统 OS X EL Capitan 前为sudo gem install cocoapods)
    

    看看这样就成功了

    Fetching: nap-1.1.0.gem (100%)
    Successfully installed nap-1.1.0
    Fetching: fourflusher-0.3.2.gem (100%)
    Successfully installed fourflusher-0.3.2
    ...
    Parsing documentation for cocoapods-1.0.1
    Installing ri documentation for cocoapods-1.0.1
    Done installing documentation for nap, fourflusher, escape, colored, concurrent-ruby, thread_safe, tzinfo, i18n, activesupport, claide, xcodeproj, molinillo, cocoapods-try, netrc, cocoapods-trunk, cocoapods-stats, cocoapods-search, cocoapods-plugins, cocoapods-downloader, cocoapods-deintegrate, fuzzy_match, cocoapods-core, cocoapods after 146 seconds
    23 gems installed
    

    再加一句,完美解决

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

    在终端中输入如下命令来完成安装:

    pod setup
    

    它需要一点时间来完成,你等就是了

    如果安装失败 ~/.cocoapods 里面是空的,就需要重新setup

    命令如下:

    pod repo remove master
    
    pod setup
    

    完毕之后这个文件夹大概有 100多M,需要花费比较多时间,请耐心等待。

    到这里你已经成功安装了CocoaPods

    终极办法:把你已经装好了cocoaPods同时~/.cocoapods目录下的repo目录拷贝下来,放进自己的目录里。再 pod setup

    为了确定CocoaPods是否可以使用,可以用CocoaPods的搜索功能验证一下。在终端中输入:

    $ pod search AFNetworking
    

    过一段时间之后(可能会比较久),你会在终端中看到一些红色的错误信息,Setting up CocoaPods master repo如下:

    Setting up CocoaPods master repo
    
    [!] /usr/bin/[Git](http://lib.csdn.net/base/28)clone 'https://github.com/CocoaPods/Specs.git' master --depth=1
    
    Cloning into 'master'...
    
    error: RPC failed; result=52, HTTP code = 0
    
    fatal: The remote end hung up unexpectedly
    

    这说明CocoaPods还不能正常使用,需要更新pod,下载它的一些依赖包;在终端中输入:

    $ pod setup
    

    过一段时间之后,你会在终端中看到跟上面同样的红色的错误信息。

    敲入以上命令时,我终端上是这个样子的(由于太长,仅截取前面一部分):

    image

    这说明某些环境原因导致pod更新不了,可能原因有,1)gem版本太低;2)github无法链接;3).cocoapods目录下的配置信息错误。我们可以一个一个来排除,

    首先更新gem到最新版本,在终端中输入:

    $ sudo gem update --system
    

    然后检查是否可以ping通github,在终端中输入:

    $ ping github.com
    

    然后查看pob repo list:

    $ pod repo list
    

    cd 到该目录里,用du -sh *命令来查看文件大小
    cd ~/.cocoapods 进入cocoapods文件后在终端输入:du -sh *
    结果显示0 repos,说明没有安装成功;
    在终端输入:
    删除.cocoapods目录,重新下载pod更新:

    $ cd ~/.cocoapods/
    
    $ sudo -rm -rf ~/.cocoapods/
    

    重新执行pod setup,过一段时间后提示setup completed,在终端中输入 pod list,展示出安装列表;

    敲入以上命令时,小编终端上是这个样子的(由于太长,仅截取前面一部分):

    image image image image image

    如果还是报错unable to access 'https://github.com/CocoaPods/Specs.git/': SSLRead() return error -9806
    遇到这种问题的话,可以手动去克隆一份到repos目录下面。

    1.通过finder的前往文件夹进行查看       ~/.cocoapods/repos
    2.通过终端,进入到   ~/.cocoapods/repos
    3.然后通过   git clone https://github.com/CocoaPods/Specs.git
    

    可怜的你发现,速度真是慢啊,你等不了,还有一个解决方法

    直接打开仓库链接,下载下来拷贝到相应的文件夹
    

    可怜的你还是发现,下载速度也很慢啊,这里还有一个解决方案

    终极解决方案,找一台工作正常的电脑,到他的~/.cocoapods/repos目录下面拷贝出master文件到自己的Mac上的相应位置
    

    好了,现在我们重新检测一下是否能正常运行。
    如果又报错:[!] Unable to find a pod with name, author, summary, or descriptionmatching 'AFNetworking'
    重置下json文件

    rm ~/Library/Caches/CocoaPods/search_index.json
    

    看到这里,你心里会不会说,我靠!太爽了,终于下载并且安装好了!接下来看下如何使用吧。。

    关于vim命令
    比如打开_config.yml文件:vim _config.yml
    先按ESC键,然后敲:,这是才可以敲命令,比如强行退出可以敲 q! ,如果需要保存退出就敲 x 或者 wq .
    vim命令合集: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html

    我们先创建这个神奇的PodFile。在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:

    $ vim Podfile
    

    或者

    $ touch Podfile
    

    然后在Podfile文件中输入以下文字:

    需要注意的是podfile里面输入的格式变了。

    platform :ios, '8.0'
    #use_frameworks!个别需要用到它,比如reactiveCocoa
    
    target '你的项目名称' do
    pod 'AFNetworking', '~> 3.1.0'
    
    end
    

    然后保存退出。vim环境下,保存退出命令是:

    :wq
    

    这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。

    这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令:

    $ pod install
    

    使用下面的命令会更快

    $ pod install --verbose --no-repo-update
    
    image

    注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。否则无法关联pod下来的类库。

    image

    二. 遇到的一些坑

    Setting up CocoaPods master repo 卡着不动

    1、那是因为 淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)

    需要的命令行:

    $ gem sources -r https://rubygems.org/ (移除旧版本的镜像,如果你不知道你电脑上目前用的是什么镜像,可用  $ gem sources -l  来查看)
    $ gem sources -a https://gems.ruby-china.org/ (增加可用的镜像)
    $ gem sources -l  (用来检查使用替换镜像位置成功)
    

    2、当pod setup 进入Setting up CocoaPods master repo 等待的时候表示正在下载了,此时你可通过新开一个终端窗口,输入"cd ~/.cocoapods/"命令行跳到cocoapods文件夹内,执行"du -sh *"查看正在下载的文件夹的大小

    3、当出现如下

    [!] An error occurred while performing `git pull` on repo `master`.
    
    [!] /usr/bin/git pull --ff-only
    

    这个错误应该是说这个节点有问题。试试把cocoapods的节点删除,重新添加一个节点,或许就行,说干就干:

    原因: Cocoapods的分支不支持当前最新的Xcode版本

    解决办法: 删除master分支 重新建立新的分支

    sudo rm -fr ~/.cocoapods/repos/master
    
    然后再: pod setup
    

    Cocoapods的安装报错 - (ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2)

    1.移除现有 Ruby 默认源

    $gem sources --remove https://rubygems.org/
    

    2.使用新的源 淘宝镜像

    $gem sources -a https://ruby.taobao.org/
    

    3.验证新源是否替换成功

    $gem sources -l
    

    成功后提示:

    *** CURRENT SOURCES ***
    https://ruby.taobao.org/
    

    4.开始安装cocoapods

    $sudo gem install cocoapods
    

    这时候提示:

    Fetching: i18n-0.7.0.gem (100%)
    Successfully installed i18n-0.7.0
    Fetching: thread_safe-0.3.5.gem (100%)
    Successfully installed thread_safe-0.3.5
    Fetching: tzinfo-1.2.2.gem (100%)
    Successfully installed tzinfo-1.2.2
    Fetching: minitest-5.9.0.gem (100%)
    Successfully installed minitest-5.9.0
    Fetching: concurrent-ruby-1.0.2.gem (100%)
    Successfully installed concurrent-ruby-1.0.2
    Fetching: activesupport-5.0.0.gem (100%)
    ERROR:  Error installing cocoapods:
    activesupport requires Ruby version >= 2.2.2.
    

    这个地方很坑,之前安装cocoapods一直是没有这个问题的,这里提示Ruby版本要大于或等于2.2.2
    于是查看已安装的ruby版本

    $ruby -v
    

    ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
    果然这里就要升级ruby版本啦
    列出ruby可安装的版本信息:

    $rvm list known
    

    如果提示command not found,说明没安装RVM;否则跳过
    安装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 baby 版本管理器 是否安装正常

    $rvm -v
    

    //________提示以下___________

    rvm 1.27.0 (latest) by Wayne E. Seguin, Michal Papis[https://rvm.io/]
    

    用RVM升级Ruby 查看当前已安装ruby版本

    $ruby -v
    
    $rvm list known
    

    列出ruby可安装的版本信息

    # MRI Rubies
    [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[.8]
    [ruby-]2.2[.4]
    [ruby-]2.3[.0]
    [ruby-]2.2-head
    ruby-head
    
    # for forks use: rvm install ruby-head-<name> --url https://github.com/github/ruby.git --branch 2.2
    
    # JRuby
    jruby-1.6[.8]
    jruby-1.7[.23]
    jruby[-9.0.5.0]
    jruby-head
    
    # Rubinius
    rbx-1[.4.3]
    rbx-2.3[.0]
    rbx-2.4[.1]
    rbx[-2.5.8]
    rbx-head
    
    # Opal
    opal
    
    # Minimalistic ruby implementation - ISO 30170:2012
    mruby[-head]
    
    # Ruby Enterprise Edition
    ree-1.8.6
    ree[-1.8.7][-2012.02]
    
    # GoRuby
    goruby
    
    # Topaz
    topaz
    
    # MagLev
    maglev[-head]
    maglev-1.0.0
    
    # Mac OS X Snow Leopard Or Newer
    macruby-0.10
    macruby-0.11
    macruby[-0.12]
    macruby-nightly
    macruby-head
    
    # IronRuby
    ironruby[-1.1.3]
    ironruby-head
    

    这里我们安装2.2.2:

    $rvm install 2.2.2
    

    终端运行结果:(如果直接成功请绕过homebrew的卸载安装)

    Searching for binary rubies, this might take some time.
    Found remote file https://rvm_io.global.ssl.fastly.net/binaries/osx/10.11/x86_64/ruby-2.2.2.tar.bz2
    Checking requirements for osx.
    About to install Homebrew, press `Enter` for default installation in `/usr/local`,
    type new path if you wish custom Homebrew installation (the path needs to be writable for user)
    :
    

    回车:

    It appears Homebrew is already installed. If your intent is to reinstall you
    should do the following before running this installer again:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
    The current contents of /usr/local are .git
    Requirements installation failed with status: 1.
    

    这里执行:

    $ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
    

    卸载home-brew

    Warning: This script will remove:
    /Library/Caches/Homebrew/
    /usr/local/.git/
    Are you sure you want to uninstall Homebrew? [y/N] y
    ==> Removing Homebrew installation...
    ==> Removing empty directories...
    ==> Homebrew uninstalled!
    You may want to restore /usr/local's original permissions
    sudo chmod 0755 /usr/local
    sudo chgrp wheel /usr/local
    

    再执行:

    $ rvm install 2.2.2
    提示:
    Searching for binary rubies, this might take some time.
    Found remote file https://rvm_io.global.ssl.fastly.net/binaries/osx/10.11/x86_64/ruby-2.2.2.tar.bz2
    Checking requirements for osx.
    About to install Homebrew, press `Enter` for default installation in `/usr/local`,
    type new path if you wish custom Homebrew installation (the path needs to be writable for user)
    :
    

    按回车:

    ==> This script will install:
    /usr/local/bin/brew
    /usr/local/Library/...
    /usr/local/share/doc/homebrew
    /usr/local/share/man/man1/brew.1
    /usr/local/share/zsh/site-functions/_brew
    /usr/local/etc/bash_completion.d/brew
    
    Press RETURN to continue or any other key to abort
    ==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
    Password:
    

    这里需要输入电脑密码:

    ==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
    ==> /usr/bin/sudo /usr/sbin/chown haha /Library/Caches/Homebrew
    ==> Downloading and installing Homebrew...
    remote: Counting objects: 501, done.
    remote: Compressing objects: 100% (445/445), done.
    remote: Total 501 (delta 29), reused 360 (delta 27), pack-reused 0
    Receiving objects: 100% (501/501), 787.83 KiB | 169.00 KiB/s, done.
    Resolving deltas: 100% (29/29), done.
    From https://github.com/Homebrew/brew
    * [new branch]      master     -> origin/master
    HEAD is now at 32f7e73 download_strategy: ensure fixed commit hash length
    ==> Tapping homebrew/core
    Cloning into '/usr/local/Library/Taps/homebrew/homebrew-core'...
    remote: Counting objects: 3714, done.
    remote: Compressing objects: 100% (3598/3598), done.
    remote: Total 3714 (delta 14), reused 2112 (delta 6), pack-reused 0
    Receiving objects: 100% (3714/3714), 2.88 MiB | 240.00 KiB/s, done.
    Resolving deltas: 100% (14/14), done.
    Checking connectivity... done.
    Checking out files: 100% (3717/3717), done.
    Tapped 3591 formulae (3,740 files, 9.0M)
    ==> Installation successful!
    ==> Next steps
    Run `brew help` to get started
    Further documentation: https://git.io/brew-docs
    ==> Homebrew has enabled anonymous aggregate user behaviour analytics
    Read the analytics documentation (and how to opt-out) here:
    https://git.io/brew-analytics
    Installing requirements for osx.
    Updating system.....
    Installing required packages: autoconf, automake, libtool, pkg-config, libyaml, readline, libksba, openssl........
    Certificates in '/usr/local/etc/openssl/cert.pem' are already up to date.
    Requirements installation successful.
    ruby-2.2.2 - #configure
    ruby-2.2.2 - #download
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    Dload  Upload   Total   Spent    Left  Speed
    100 6854k  100 6854k    0     0  61342      0  0:01:54  0:01:54 --:--:--  132k
    ruby-2.2.2 - #validate archive
    ...
    ruby-2.2.2 - #generating default wrappers........
    Updating certificates in '/etc/openssl/cert.pem'.
    mkdir: /etc/openssl: Permission denied
    mkdir -p "/etc/openssl" failed, retrying with sudo
    haha password required for 'mkdir -p /etc/openssl':
    and sudo mkdir worked
    

    这样ruby2.2.2就安装好了
    现在就可以安装cocoapods啦 (上跳流程第四步):

    安装ruby遇到" Installing Homebrew - Brew Command Not Found"命令找不到解决方案:

    Check XCode is installed or not.

    $gcc --version
    
    $ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    $brew doctor
    
    $brew update.
    

    完成后 执行

    $ruby -v
    

    //–––––打印输出–––––––

    ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
    

    CocoaPods报错:The dependency AFNetworking is not used in any concrete target

    在创建Podfile的时候,用这种格式使用

    platform :ios, '8.0'
    #use_frameworks!个别需要用到它,比如reactiveCocoa
    
    target 'MyApp' do
    pod 'AFNetworking', '~> 2.6'
    pod 'ORStackView', '~> 3.0'
    pod 'SwiftyJSON', '~> 2.3'
    end
    

    里面的 MyApp 记得替换为自己攻城里面的target。这样就基本OK了,执行pod install / pod update 就都可以了。(use_frameworks! 这个是个别需要的,这里修改一下,可以把我上面的代码中的这一行【删除】)
    下面是另外一种写法:

    platform :ios, '8.0'
    #use_frameworks!个别需要用到它,比如reactiveCocoa
    
    def pods
    pod 'AFNetworking', '~> 2.6'
    pod 'ORStackView', '~> 3.0'
    pod 'SwiftyJSON', '~> 2.3'
    end
    target 'MyApp' do
    pods
    end
    

    运行 sudo gem update --system 终端提示Updating rubygems-update ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems

    Mac OS X 10.11后不能使用sudo gem update --system了
    需要替换成:sudo gem update -n /usr/local/bin —system
    $ sudo gem update -n /usr/local/bin —system
    终端提示貌似没有可以更新的内容
    Updating installed gems Nothing to update

    本文参考:

    海旋意境的博客<<CocoaPods安装2017>>
    fairytale_1的博客<<关于安装cocoapods遇到的一些坑(ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2)>>
    公羽寒的博客<<Cocoapods的安装报错 - Error installing pods:activesupport requires Ruby version >=2.2.2>>
    CrazySteven的博客<<CocoaPods的更新>>
    史金亮的博客<<CocoaPods报错:The dependency 'AFNetworking ' is not used in any concrete target>>
    果啤的博客<<我第一次成功安装CocoaPods的过程>>
    timeToShow的博客<<cocoapods安装及常用命令>>

    相关文章

      网友评论

          本文标题:CocoaPods安装指南

          本文链接:https://www.haomeiwen.com/subject/tcbivxtx.html