浅谈CocoaPods那点事。。。

CocoaPods是一个负责管理iOS项目中第三方开源代码的工具。
在使用CocoaPods之前,开发项目需要用到第三方开源库的时候,我们需要

  • 把开源库的源代码复制到项目中
  • 添加一些依赖框架和动态库
  • 设置-ObjC,-fno-objc-arc等参数
  • 管理他们的更新
    在使用CocoaPods后,我们只需要把用到的开源库放到一个名为Podfile的文件中,然后执行pod install.Cocoapods就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好响应的系统依赖和编译参数。

    CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

  • CocoaPods的安装
    需要用到ruby,Mac系统自带ruby,但如果不是最新的系统,最好更新一下。
    ruby的软件源rubygems.org被墙了,所以先换一下源,命令行下依次执行3条命令

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
  • 更新gem,国内需要切换源
$ sudo gem update --system
  • 安装CocoaPods
$ sudo gem install cocoapods   
$ pod setup
  • 查看CocoaPods版本
$ pod --version
  • 出现Setting up CocoaPods master repo,半天没有任何反应。原因无他,因为那堵墙阻挡了cocoapods.org。。。
    gitcafe和oschina都是国内的服务器,可以用它们CocoaPods索引库的镜像:
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
如果想用oschina的镜像也可以把第二条命令 换成
$ pod repo add master http://git.oschina.net/akuandev/Specs.git 
  • CocoaPods的使用
  • 在终端shell中cd 来到你要管理的项目,运行:pod install 你的工程就多了个xworkspace文件夹,以后用这个打开工程
  • 添加第三方库
搜索一个开源库(例如搜索AFNetworking$ pod search AFNetworking
在工程目录里建一个Podfile文件
$ vim Podfile
内容按这个格式来
platform :ios,'8.0'
pod 'AFNetworking', '~> 3.0.4'
pod 'SDWebImage', '~> 3.7.1'
pod 'FMDB', '~> 2.3'
导入第三方库
$ pod install

使用时候的常见问题

  • 使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动
原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

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

pod update --verbose --no-repo-update
  • 终端报错
 LoadError - dlopen(/Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/psych.bundle, 9): Library not loaded: /usr/local/lib/libyaml-0.2.dylib
  Referenced from: /Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/psych.bundle
  Reason: image not found - /Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/psych.bundle
  • 可能是 repos 的问题, 执行系列命令
$ cd ~/.cocoapods/repos
$ rm -rf master
$ pod setup
  • 可能是 cocoapods出问题了, 想卸载重新安装, 所有就要执行下面的命令
$ sudo gem uninstall cocoapods
$ sudo gem install cocoapods
$ pod setup
当你再次遇到这个问题时候
Error loading RubyGems plugin "/Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/gems/2.0.0/gems/gem-wrappers-1.2.7/lib/rubygems_plugin.rb": dlopen(/Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/openssl.bundle
  Reason: image not found - /Users/MyMac/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/x86_64-darwin14.1.0/openssl.bundle (LoadError)

你只需要重新安装了 rvm, 然后就解决了所有的事情.
\curl -L https://get.rvm.io | bash -s stable --ruby
  • 当你嫌安装太慢时候,可以使用CocoaPods的镜像索引
所有项目的Podspec文件都托管在https://github.com/CocoaPods/Specs,
第一次执行pod setup时,CocoaPods会将这些podspec索引文件更新到本地的~/.cocoapods目录下,
这个索引文件比较大,所以第一次更新时非常慢.
友好人士在国内的服务器建立了Cocoapods索引库的镜像,
所以执行索引跟新操作时候会快很多.具体操作方法如下:
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
这是使用gitcafe上的镜像,将以上代码中的 https://gitcafe.com/akuandev/Specs.git 
替换成 http://git.oschina.net/akuandev/Specs.git 即可使用oschina上的镜像。
  • 安装cocoa pods的Xcode插件
安装cocoa pods的插件 cocoapods-xcode-plugin-master下载路径:https://github.com/kattrali/cocoapods-xcode-plugin

使用Xcode打开,运行后,选择运行加载该插件“Load.....”安装完成:修改GEM_PATH:/usr/local/bin
即可通过该插件编辑podfile文件来加载三方框架

你可能感兴趣的:(浅谈CocoaPods那点事。。。)