CocoaPods 的详细安装步骤,使用方法以及安装过程中出现的各种错误总结

使用cocoapods时常见错误: http://www.jianshu.com/p/dfc7b93e67eb
iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。 源码 在Github上开源https://github.com/CocoaPods/CocoaPods

二、安装
CocoaPods的 下载安装 需要在Ruby环境下进行。

1、Ruby环境搭建
Mac  OS本身自带Ruby,但是需要更新一下版本。首先查看一下你的ruby版本,看看是否满足安装cocoapods时ruby的安装版本要求,因为我第一次安装在没有更新Ruby的情况下就失败了。

a. 查看下当前ruby版本:
打开终端输入:
终端输入:ruby -v(确实安装了,不过用这个版本接下来工作失败了,所以更新下ruby)

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]  
ritekiMac-mini:PodTest lucky$  

b. 更新ruby 
      升级ruby终端输入:  gem update --system
移除现有的Ruby
终端输入: gem sources --remove https://rubygems.org/
使用china镜像:
终端输入:gem source -a https://gems.ruby-china.org(注意此处也可以把Ruby镜像指向taobao,避免被墙(二者可选一),如下

gem sources -a http://ruby.taobao.org/      注意:这里至( 2016-01-20) 已被更新为 淘宝ruby镜像: gem sources -a https://ruby.taobao.org/

第一个命令是移除官方源,因为在不翻墙的情况下,使用起来比较慢;第二个命令是添加ruby-china的RubyGems镜像(很多旧教程都是说使用taobao的gem源,但是taobao的gem源已经停止维护了,

c.接下来运行一个命令查看是否成功添加了ruby-china的gem源:
终端输入:gem source

出现如下表示成功:
  1. ritekiMac-mini:~ lucky$ gem sources -l  
  2. *** CURRENT SOURCES ***
  3. https://gems.ruby-china.org

2、下载安装CocoaPods
a.
终端输入:sudo gem install cocoapods 

出现如下表示成功:
CHANGELOG:  
…...
Done installing documentation for cocoapods after 10 seconds  
1 gem installed  

这样就下载安装好了 CocoaPods

b.安装结束后,需要运行一下命令初始化CocoaPods:
终端输入:pod setup

出现如下表示安装完成
Setup completed
没有什么错误的话,就算了安装结束了。

可能存在的错误:
a.   gem版本过老:
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是 升级gem,
升级gem
  1. $ sudo gem update --system  


b. 安装完成后,执行pod setup命令时报错:
  1. /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)  
  2.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'  
  3.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem'  
  4.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>' 
这就是路径设置的问题,可以通过执行:

  1. $ rvm use ruby-1.9.3-p448  

解决该问题



3、使用CocoaPods

a.  新建一个项目,名字PodTest(可以随便写) (这个项目最好放在桌面便于找)



b.创建Podfile
  打开终端,使用cd命令定位到需要使用CocoaPods的项目根路径。 (注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)

  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  
  2. $ touch Podfile  
终端输入:cd (你的项目的路径,即在你的项目路径的前面+cd)如上图所示,   注意:这里cd  和后面的路径间要有空隔,否则就会爆照不到文件的错误(我就是一直错在在这里)
再次输入:touch Podfile  
首先进入到工程的根目录下,就能看到如图的  Podfile 文件:

(PS:Podfile文件也可以不放在工程的根目录下,只是会稍微麻烦点,在下一篇文章中会有介绍,敬请关注。)

2、编辑Podfile
根据需要,我们可以在Podfile文件中写入需要用到的第三方库,以 ORStackView AFNetworking SwiftyJSON 三个库为例, 我的Podfile内容如下:
  1. platform :ios, ‘10.0'
    #use_frameworks!个别需要用到它,比如reactiveCocoa  
    MyApp为你的项目的名字
    def pods
      pod 'AFNetworking''~> 2.6’ //这里需要添加什么第三方就在里面添加 再在终端执行 
    pod install / pod update 即可
      pod 'ORStackView''~> 3.0'
      pod 'SwiftyJSON''~> 2.3'
    end
    target 'MyApp' do
      pods
    end

终端输入:执行pod install / pod update 

请点击进去参考:

可能是要添加的这个库 不支持swift导致 
解决办法:在podfile里面添加 use_frameworks!
platform :ios, '8.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa  
MyApp为你的项目的名字

def pods
  pod 
'AFNetworking''~> 2.6'
  pod 'ORStackView''~> 3.0'
  pod 'SwiftyJSON''~> 2.3'
use_frameworks! //在这里添加,设置支持 swift,如果不引进swift相关的类则可以不用写 
end
target 'MyApp' do
  pods
end
就是在加入你需要的那些库之后最后再加一句use_frameworks!


3、执行导入命令
准备工作都完成后,开始导入第三方库:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $ cd /Users/wangzz/Desktop/CocoaPodsTest  
  2. $ pod install  

首先进入工程根目录,然后执行pod install命令,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作,命令的执行结果打印出来如下:

  1. Analyzing dependencies  
  2. Downloading dependencies  
  3. Installing AFNetworking (2.1.0)  
  4. Installing JSONKit (1.5pre)  
  5. Installing Reachability (3.0.0)  
  6. Generating Pods project  
  7. Integrating client project  
  8. [!] From now on use `CocoaPodsTest.xcworkspace`.  

这就说明pod install命令执行成功了。再来看看工程根目录发生的变化,如下图:

可以看到,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。

再看看刚才执行完pod install命令打印出来的内容的最后一行:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [!] From now on use `CocoaPodsTest.xcworkspace`.  

提示我们从现在起,我们需要使用CocoaPodsTest.xcworkspace文件来开发,
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
即:CocoaPodsTest.xcworkspace,

说明事项:
对于工程发生的变化,有几点需要说明:

第三方库会被编译成静态库供我们正真的工程使用
CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。 整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
 
我们的工程和第三方库所在的工程会由一个新生成的workspace管理
为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
打开CocoaPodsTest.xcworkspace,界面如下:

工程的目录结构还是非常明显的。
在项目中引用刚才添加的第三方库的头文件,执行编译操作,果断成功!


CocoaPods: pod search 搜索类库失败的解决办法

执行后可能会一直停在

Setting up CocoaPods master repo然后(很久)会出现如下错误:

[!] Failed to connect to GitHub to update the CocoaPods/Specs specs repo - Please check if you are offline, or that GitHub is down

解决办法是:

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

   $ pod setup

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

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

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

$ sudo gem update --system 

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

$ ping github.com 

然后查看pob repo list

$ pod repo list

说明Cocoapods在将它的信息下载到 ~/.cocoapods里;

cd  到该目录里,用du -sh *命令来查看文件大小,结果显示0 repos,说明没有安装成功;

在终端输入:

cd ~/.cocoapods

进入cocoapods文件后在终端输入:du -sh *


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

这样总算安装好了。接下来再一次输入:


pod search AFNetworking
  1. 执行pod setup
    • 其实在你安装CocoaPods执行pod install时,系统会默认操作pod setup,然而由于中国强大的墙可能会pod setup不成功。这时就需要手动执行pod setup指令,如下:
    • 终端输入:pod setup
    • 会出现Setting up CocoaPods master repo,稍等几十秒,最底下会输出Setup completed。说明执行pod setup成功。
    • 如果pod search操作还是搜索失败,如下:
    • 终端输入:pod search AFNetworking
    • 输出:Unable to find a pod with name, author, summary, or descriptionmatching 'AFNetworking’ ,但是我输入pod search pop,却有相应的结果,会出现很多的第三方库。这时就需要继续下面的步骤才会得到上面你所搜索的库。
  2. 删除~/Library/Caches/CocoaPods目录下的search_index.json文件
    • pod setup成功后,依然不能pod search,是因为之前你执行pod search生成了search_index.json,此时需要删掉。
    • 终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
    • 删除成功后,再执行pod search
  3. 执行pod search
    • 终端输入:pod search afnetworking(不区分大小写)
    • 输出:Creating search index for spec repo 'master'.. Done!,稍等片刻······就会出现所有带有afnetworking字段的类库。


4.输入 pod search afnetworking提示如下的错误:

[!] Unable to find a pod with name, author, summary, or descriptionmatching '······'

对于有些类库确实是在Cocoapods中所不存在的,为了确定我们搜索的库是不是真的在Cocoapods的Repos中存在,我们可以到 https://cocoapods.org/中进行搜索。
5. 输入 pod search 后出现如下:
这是他的一些搜索要求,可不必管,继续以上的 pod search,若出现错误可参考以上的方法解决。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值