IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    学习iOS:使用CocoaPods管理iOS包依赖

    三水清 (ksky521@gmail.com)发表于 2016-06-11 00:50:20
    love 0

    iOS的生态中CocoaPods是包依赖管理工具,等同于node生态中的npm,OSX中的brew,linux的apt-get、yum这些工具,下面介绍下CocoaPods的安装和基本使用方法

    安装

    首先要有ruby(Mac自带哦~),然后执行gem

    sudo gem install cocoapads
    pod setup
    

    这时候估计会报:Operation not permitted - /usr/bin/xcodeproj错误,需要执行下面的操作:

     mkdir -p $HOME/Software/ruby
    $ export GEM_HOME=$HOME/Software/ruby
    $ gem install cocoapods
    [...]
    1 gem installed
    $ export PATH=$PATH:$HOME/Software/ruby/bin
    $ pod --version
    1.0.0
    

    我是修改了.bash_profile(zsh修改.zshrc),将export GEM_HOME=$HOME/Software/ruby放进去,把$HOME/Software/ruby/bin加入PATH。这时候在再执行gem install cocoapads 就不会报错了。

    pod setup在执行时,会输出Setting up CocoaPods master repo,但是会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods目录下,如果你等太久,可以试着 cd 到那个目录,用du -sh *来查看下载进度。你也可以参考下面的 使用 cocoapods 的镜像索引 一节的内容来提高下载速度。

    使用 CocoaPods 的镜像索引

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

    pod repo remove master
    pod repo add master https://gitcafe.com/akuandev/Specs.git
    pod repo update
    

    将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git 即可使用 oschina 上的镜像。

    使用CocoaPads管理iOS依赖

    CocoaPads的基本命令是pod,常用的方法如下

    • 初始化:进入项目路径 pod init
    • 安装:pod MODULE_NAME
    • 安装特定版本的依赖:pod MODULE_NAME, 版本,例如:pod 'Objection', '0.9'
    • 更新 pod update
    • 搜索 pod search MODULE_NAME

    Podfile介绍

    在pod init的时候会在你项目中创建一个Podfile 文件,很类似npm的 package.json,如果一个项目中已经有了Podfile, 就可以直接进入该目录然后执行 pod install,就会安装上Podfile中的依赖包

    Podfile.lock介绍

    执行pod install之后会生成Podfile.lock放在目录中,为了保证每次执行pod install的版本一致性,所以建议把Podfile.lock放入版本库维护,如果需要更新某个包的版本,执行pod update,则Podfile.lock文件会发生变化,记得提交到版本库

    参考文章

    • https://guides.cocoapods.org/
    • http://blog.devtang.com/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/
    • http://studentdeng.github.io/blog/2013/09/13/cocoapods-tutorial/
    • https://github.com/CocoaPods/CocoaPods/issues/3692


沪ICP备19023445号-2号
友情链接