您的位置:首页 > 其它

浅谈CocoaPods那点事。。。

2016-05-11 10:49 417 查看
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文件来加载三方框架
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: