ios学习笔记5--CocoPods使用详解

文章背景:
iOS开发避免不了要使用第三方库,第三方库给我们打开方便之门的同时,也带来了一些不必要的麻烦,比如:开源库需要依赖一些framework,这个手动的加载到你的工程当中;对于某些三方库需要设置一些编译参数;还有就是,当你想使用某个三方库的最新版本的时候,需要手动移除当前项目中的三方库、然后添加最新的三方库、甚至还需要重新配置参数。

以上这些都是毫无意义的体力活,但是又不得不做,不过每种语言发展到一定阶段,都会出现相应的依赖管理工具,CocoaPods应运而生。

为了避免每次遇到问题,都要从网上搜索一波的尴尬局面,也为了节约开发时间。因此,本文将详细从以下几个方面进行详细讲解,作为后续开发参考,高手勿喷。

  • CocoaPods安装基本步骤
  • xcode中集成CocoaPods
  • cocoaPods常用指令及注意事项
  • 让自己的开源项目支持CocoaPods
  • 创建自己私有的pods

一、CocoaPods的安装基本步骤
CocoaPods的安装步骤,网上一搜索、相关文章铺天盖地,这里简明扼要的介绍一下需要用到的指令,详细内容见后面的参考网址。

  1. Mac自带ruby环境,首先升级ruby的gem命令

    sudo gem update --system

  2. 因为ruby的镜像被我天朝屏蔽,需要移除当前镜像,添加国内的镜像
    gem sources --remove https://rubygems.org/
    gem source -a https://gems.ruby-china.org/

  3. 查看当前软件源是否更换成功
    gem sources -l

    这里写图片描述
    备注:如果没有替换成功,继续执行gem source -a https://gems.ruby-china.org/

  4. 执行安装CocoaPods命令
    sudo gem install cocoapods

    如果出现以下提示,代表没有权限安装
    这里写图片描述

    则需要执行以下指令:
    sudo gem install -n /usr/local/bin cocoapods

  5. 启动CocoaPods
    pod setup
    此时,会输出Setting up CocoaPods master repo,进入漫长的等待。
    备注:
    (1)、pod setup用于初始化本地第三方库的Spec描述文件,所有的spec文件存都存放在~/.cocoapods目录中。这个过程比较缓慢,因为不止你一个人在使用在更新pods库。
    如果网络不是太好,此时可能会出现下载中断,由于Spec文件不完整,会影响后续使用。因为所有项目的Podspec文件都托管在github上面,所以可以手动去github上进行下载,这样可以知道下载的文件是否完整。
    https://github.com/CocoaPods/Specs

    (2)、另外补充,pod list和pod search命令只搜索存在于本地~/.cocoapods文件夹的所有第三方库,并不会连接到远程服务器。如果你要从服务器更新本地第三方库的描述文件,可以执行以下命令:
    pod repo update master

技巧:当用终端下载Spec库的时候,此时为了查看进度,可以进行以下操作

  • command+n新建一个终端窗口
  • 执行cd ~/.cocoapods/指令
  • 执行du -sh *指令、查看当前安装包大小<大概是900M>

6.cocoaPodApp使用
以上安装cocoaPod使用的都是终端指令,对于不喜欢终端操作的同学,可以考虑使用cocoaPod自己出的一款app。
a、官网下载地址:
http://cocoapods.org/app
b、利用app安装命令行工具,减少终端操作的繁琐步骤

这里写图片描述

此时,如果已经用终端安装好了cocoPods,此时会给出以下提示:

这里写图片描述

是不是比终端指令安装更加简单,不过个人习惯终端指令,你喜欢哪一种随便。

二、xcode中集成CocoaPods
这里同样会介绍两种操作方式:

  • 终端指令,
  • CocoaPods App操作

1、终端指令操作
在已经创建好的xcode项目中新建Podfile文件

  • 进入当前工程中
    cd /Users/admin/Desktop/shiyan/cocoaPodTest
    这里写图片描述

  • 创建文件

touch Podfile
  • 编写Podfile文件
 vim Podfile

此时会进入以下界面
这里写图片描述

编写样式如下:
这里写图片描述

样板如下:

platform :ios, '8.0'
target "testTwo" do
pod "AFNetworking", "~> 3.0"
pod "SDWebImage", "~> 4.0"
end
  • 将第三方库下载到xcode
    pod install
    此时工程所在文件夹发生变化,如下图所示:
    这里写图片描述
    自此以后,打开工程时,需要点击xcworkspace,而不是xcodeproj。

备注:这里介绍一下如何编写Podfile文件
(1)、常用指令
vim : 打开一个文件,进入阅读模式、不可编辑。
i : 在当前位置插入。
a : 在当前位置后追加。
ESC : 从编辑模式转换到阅读模式。
:w :在编辑模式下,保存文件。
:q :在编辑模式下,退出。
:wq :在编辑模式下,保存退出。
:q! :在编辑模式下,强行退出。
:w! :在编辑模式下,强行写。

(2)、Podfile参数简介
platform : ios, ‘8.0’ : 指定第三方库所支持系统和最低版本。
target:目标工程,声明当前Podfile只对当前工程有效。
pod ‘AFNetworking’, ‘~> 2.5.4’ :指定下载第三方库的版本。

(3)、对于第三库的版本号理解
pod ‘三方库’,’>0.1’ : 高于0.1的任何版本。
pod ‘三方库’,’>=0.1’ : 版本0.1和任何更高版本。
pod ‘三方库’,’<0.1’ : 低于0.1的任何版本。
pod ‘三方库’,’<=0.1’ : 版本0.1和任何较低的版本。
pod ‘三方库’,’~>0.1.2’ : 版本 0.1.2的版本到0.2 ,不包括0.2<这里的~相当于在当前版本号,倒数第二位加1>。

参考网址:
http://www.jianshu.com/p/3b6398f63e92
http://www.jianshu.com/p/8af475c4f717

2、利用cocoaPods App操作

  • 创建一个xcode工程
    这里写图片描述

  • 利用cocoaPods App创建Podfile
    这里写图片描述

  • 选择刚才创建的工程:

这里写图片描述

  • 创建结果如下:
    这里写图片描述

    备注:这里pod “AFNetworking”, “~> 2.0”是需要自己添加进去,其余会自动生成。换句话说,自己需要那些三方库,需要你自己手动添加进去。

  • 此时点击右上角的install按钮
    这里写图片描述
  • 此时操作完毕,查看当前工程如下:
    这里写图片描述

    效果跟原来的一样,有木有!!!!

三、cocoaPods常用指令及注意事项
1、pod setup

  • 初次安装cocoaPods时执行,这个是Cocoapods 在将它的信息下载到 ~/.cocoapods目录下;前面提到过也可以手动去github上下载spec文件。

  • 这些存放的是第三方库的Spec文件,有了这些文件,第三方库才能被cocoaPods管理。后面会详细讲解《让自己的开源项目支持CocoaPods》。

2、pod install

  • 初次编写Podfile后,执行pod install,这样cocoaPods上面的三方库就会下载到当前工程中。

  • 简单来说,当Podfile中有移除或者新添加库的时候,执行pod install。

  • 当Podfile没有新添加库,只是已存在库的版本发生了变化,执行这条指令,不会起任何作用。

  • 因为在第一次执行pod install时,每个三方库的版本号已经写入Podfile.lock文件中,只要是Podfile.lock中已经存在的库,pod install都会不管不顾。

  • 在代码提交过程中Podfile.lock也要commit,这样做是为了保证多人开发的时候,第三方库版本的一致性。

小结:

  • 当Podfile中增加或者删除库的时候,执行pod install。
  • pod install对已经存在的库不起作用。
  • 代码提交时,需提交Podfile.lock文件。

3、pod update
当某个第三方库版本需要升级使用此指令

  • 修改Podfile中对应版本库的版本号。
  • 执行pod update 库名;这是更新某个特定库。
  • 执行pod update;这里是更新所有的库,当然了在Podfile版本限制范围内。
  • 执行完毕后,Podfile.lock文件也会被更改

4、pod outdated
执行此指令,CocoaPods会列出那些所有较Podfile.lock里面有新版本的库<与当前安装的版本对比>。

例如:
当前工程,我只写入了
pod “AFNetworking”, “~> 2.0”,执行pod outdated后,结果如下:

这里写图片描述
这里显示当前版本是2.6.3,网上最新版本是3.1.0。

小结:

  • 添加新库,执行pod insatll,不要执行pod update。
  • 更新库的时候,指定版本,不要全部更新
  • 即使Podfile中已经指定版本号了,也不要轻易使用pod update。这不足以保证多人开发时,三方库版本的一致性。

5、pod list
列出所有可用的第三方库。

6、pod search
搜索第三方库

小结:

  • pod list和pod search命令只搜索存在于本地~/.cocoapods文件夹的所有第三方库,并不会连接到远程服务器。
  • 如果你要从服务器更新本地第三方库的描述文件,执行pod repo update master。

四、让自己的开源项目支持CocoaPods
这里首先讲解一下原理,关于搜索

五、创建自己私有的pods

六、常见问题解决方案

1、 编辑好Podfile,执行pod install,报错

/Library/Ruby/Site/2.0.0/rubygems.rb:270:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) (Gem::GemNotFoundException)
    from /Library/Ruby/Site/2.0.0/rubygems.rb:298:in `activate_bin_path'
    from /usr/local/bin/pod:22:in `<main>'

解决方案如下:

  • sudo gem uninstall cocoapods
  • gem install cocoapods
  • pod install

2、执行gem install cocoapods,报错

ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR:  You must add /O=Digital Signature Trust Co./CN=DST Root CA X3 to your local trusted store
ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
ERROR:  You must add /O=Digital Signature Trust Co./CN=DST Root CA X3 to your local trusted store
Fetching: cocoapods-1.2.1.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

解决方案:

  • sudo gem install -n /usr/local/bin cocoapods

3、执行pod search时,出错
这里写图片描述

解决方案:
这是因为之前pod search的时候生成了缓存文件search_index.json;此时
执行rm ~/Library/Caches/CocoaPods/search_index.json来删除该文件;然后接着搜索就可以了。

六、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值