美文网首页iOS Cocoapods相关
cocoapods系列教程---安装与使用

cocoapods系列教程---安装与使用

作者: youngyunxing | 来源:发表于2016-09-18 18:29 被阅读600次

    cocoapods系列教程---安装与使用
    cocoapods系列教程---Podfile文件
    cocoapods系列教程---Podfile.lock文件 和 Spec Repo
    cocoapods系列教程---spec文件
    cocoapods系列教程---原理篇
    cocoapods系列教程---让自己的开源框架支持cocoapods
    cocoapods系列教程---模块化设计
    cocoapods系列教程---创建私有pods

    毫无疑问,官网是最好的教程:https://cocoapods.org/

    CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。

    安装cocoapods

    • 安装最新版cocoapods

      sudo gem install cocoapods
      
      pod setup
      
      

      pod setup 实际上做的事是将https://github.com/CocoaPods/SpecsCocoapods克隆~/.cocoapods/repos目录下。即使在安装时不执行此命令,在初次执行pod install命令时,系统也会自动执行pod setup.
      很遗憾的是这个过程速度很慢,甚至被墙掉也很正常.国内有人做了镜像

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

      理论上是这样,可是最新版cocoapods貌似还是会自动更新官方地址;无奈做了个投机取巧的办法

         pod repo remove master
         pod repo add master https://gitcafe.com/akuandev/Specs.git
      cd ~/.cocoapods/repos/master
      git remote rm origin
      git remote add origin https://github.com/CocoaPods/SpecsCocoapods
      
      

      把远程仓库的地址改成官方的.

    • 安装指定cocoapods版本

      sudo gem install cocoapods -v 0.39.0
      
      
    • 查看cocoapods的版本

      pod --version
      
      
    • 如果你的 gem 太老,可能也会有问题,可以尝试用如下命令升级 gem:

      sudo gem update --system
      
      
    • 升级,更新至最新版cocoapods

      sudo gem update cocoapods  
      
      

      或者

      sudo gem install cocoapods  
      
      

      最近2016.8升级会提示:

      Error installing cocoapods:  activesupport requires Ruby version >= 2.2.2.
      
      

      意思是要求ruby版本要不小于2.2.2,升级下ruby版本即可,如何升级ruby点击这里

    • 一般安装完成之后我们都修改镜像源,修改成国内的,访问速度比较快

      //先删除
      gem sources --remove https://rubygems.org/
      
      //再添加淘宝,注意是https
      gem sources -a https://ruby.taobao.org/
      
      

      列出源,验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看:

      gem sources -l
      
      

      输出如下

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

    卸载

    • 如果本地有只有一个版本,会直接卸载.如果有多个版本的cocoapods,系统会让你选择,卸载哪一个.

      sudo gem uninstall cocoapods
      
      
    • 卸载指定的版本

      sudo gem uninstall cocoapods -v 0.38.0
      
      

    降级

    某些依赖库可能比较老,不支持新的cocoapods,这时候需要降级,首先卸载新版本,然后装旧版本

    sudo gem uninstall cocoapods -v 1.0.0
    sudo gem install cocoapods -v 0.38.0
    
    

    使用

    • 判断某个库是否支持CocoaPods,或者查找某个库

      pod search AFNetworking
      
      

      支持只输入库名字的一部分,比如我想查找AFNetworking.但是我只记得AFN这三个字母,我可以这样搜索:

      pod search AFN
      
      
    • 创建podfile,先 cd 到项目所在目录,创建名字为podfile文件,podfile这个文件
      可以直接用Xcode打开,编辑在Podfile文件里输入以下文字:

      platform :ios, '8.0'
      target 'Your_App_Name' do
      pod 'AFNetworking', '~> 3.0'
      end
      
      
      • ios:表示ios平台,其它还有OS X等
      • 8.0:表示支持iOS8.0以后版本
      • 3.0:表示AFNetworking指定大于3.0版本,如果不指定,默认最新版本
      • 如果依赖库是swift写的,应该加上一句 use_frameworks!
      platform :ios, '8.0'
      use_frameworks!
      
      target 'Your_App_Name' do
      pod 'AFNetworking', '~> 3.0'
      //这个库是用switf写的
      pod 'SwiftyJSON', '~> 2.3'
      end
      
      
    • 安装依赖

      pod install
      
      

      但是每次都很慢,因为每次执行这个命令都会更新本地索引文件,用下面这句命令替代:

      pod install --no-repo-update
      
      
    • 单独更新某一个依赖.例如只更新 AFNetworking

      pod update AFNetworking
      
      
    • 更新所有依赖,如果某个依赖已经是最新,则不再更新

      pod update
      
      
    • 指定源地址,例如,指定为本地目录,这种一般用于将依赖库提前放到了本地,这样速度会快过很多

      pod 'AFNetworking', path: '/Users/apple/Desktop/CodeStore/AFNetworking'
      
      

      执行安装完毕之后提示如下:

      [!] Please close any current Xcode sessions and use Your_Project_Name.xcworkspace for this project from now on.
      
      

      使用 CocoaPods 生成的 ***.xcworkspace***文件来打开工程,而不是以前的 ***.xcodeproj*** 文件

    • 使用CocoaPods来管理三方库,还是比较方便的,但是有个美中不足的小问题,在使用import引入文件时,不能自动补齐,需要手工copy文件名.解决办法:Target -> Build Settings ,User Header Search Paths条目中,添加"${SRCROOT}”或者“$(PODS_ROOT)”,并且选择Recursive,递归搜索,然后就可以自动补齐了。

    pod install 和 pod update 的区别

    1. pod install 在添加了新的依赖库,或者删除了某个依赖库.会把依赖库的版本写入Podfile.lock文件.它所解决的只是 有和无得问题,如果有就什么也不做,而不会检查更新,即使依赖库有了新的版本.如果没有就添加,就会下载podfile中指定的版本,如果没有指定版本,那么下载最新版本.
    列出有最新版本的依赖库:
    
    ```
    pod outdated
        
    ```
    
    1. pod update 只是更新依赖库的版本,并且更新podfile.lock中记录的版本.如果podfile文件中指定了某个版本,那么就会更新到该版本,而不是最新版本.例如:AFNetworking最新版本是3.3.0,而我指定的是2.0,那么只会更新到2.0,而不是3.3.0 如果Podfile中没有指定版本或者指定是某个范围,则更新该库依赖库并更新pod.lock中记录的版本. 如果podfile中所有的依赖库都没有指定版本,那么会更新所有的依赖库.

    2. 总结就是:首次添加用pod install,更新用pod update,单独更新某一个依赖pod update + 名字,每个依赖库可能对cocoapods的版本要求不一致,所以建议多用单独更新.

    相关文章

      网友评论

        本文标题:cocoapods系列教程---安装与使用

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