CocoaPods

1.原理及说明

每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods,CocoaPods项目的源码在Github上管理。比如通常情况下,一个网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。对于某些开源库,我还需要设置-licucore或者 -fno-objc-arc等编译参数管理这些依赖包的更新。这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

1、第三方库会被编译成.a静态库供我们真正的工程使用。
CocoaPods会将所有的第三方库以target的方式组成一个名为Pods的工程,该工程就放在刚才新生成的Pods目录下。整个第三方库工程会生成一个名称为libPods.a的静态库提供给我们自己的CocoaPodsTest工程使用。
对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
2、我们的工程和第三方库所在的工程会由一个新生成的workspace管理
为了方便我们直观的管理工程和第三方库,CocoaPodsTest工程和Pods工程会被以workspace的形式组织和管理,也就是我们刚才看到的CocoaPodsTest.xcworkspace文件。
3、原来的工程设置已经被更改了,这时候我们直接打开原来的工程文件去编译就会报错,只能使用新生成的workspace来进行项目管理。
4、CocoaPods通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数。

2.安装Ruby环境

2.1 查看Mac是否安装Ruby和gem

PS:Ruby是一门开发语言,gem为Ruby第三方库管理工具,CocoaPods是用Ruby写的一个第三方工具。
在终端中输入命令:ruby --versiongem --version
输出如下类似提示符,则表示Ruby环境已安装

$ ruby --version
ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-darwin14.3.0]
$ gem --version
2.4.8

2.2 若提示command not found 则需要安装Ruby环境

  • 安装Ruby环境需要安装Xcode及Command Line Tools。

  • 安装Command Line Tools:xcode-select --install

  • 安装RVM,Ruby的多版本管理工具。

    $ curl -L https://get.rvm.io | bash -s stable
    $ source ~/.rvm/scripts/rvm
    $ rvm install 2.0.0
    $ rvm use 2.0.0
    $ /bin/bash --login
    

3.安装CocoaPods

使用淘宝的镜像安装Ruby的第三方库,修改gem的镜像:

$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/

为了验证你的Ruby镜像是并且仅是淘宝,可以用以下命令查看:

$ gem sources -l
# 只有在终端中出现下面文字才表明你上面的命令是成功的:
* CURRENT SOURCES *
https://ruby.taobao.org/

如果出现多个需要将其余的源删除。
终端中执行安装CocoaPods

$ sudo gem install cocoapods

执行完成后,需要初始化CocoaPods的环境

$ pod setup

4.使用CocoaPods

  1. 创建Xcode工程并切换到该工程路径

  2. 使用命令pod init在当前文件夹下生成一个Podfile文件

  3. 编辑该文件,在该文件中输入如下信息:

    $ vim Podfile
    platform :ios, '7.0'
    pod "AFNetworking", "~> 2.5.4"
    pod 'SDWebImage'
    pod 'KVNProgress'
    

    该文件中的命令格式为:pod '第三库名称', '版本号'
    第三库名称,名称一定要正确,不然有可能安装失败。

    版本号标识区别:

    >= 1.0 至少版本为1.0

    ~> 1.0 兼容1.0版本的最新版

    == 1.0或1.0 都表示指定版本

  4. 安装工程依赖的第三方库

    $ pod install
    Updating local specs repositories
    Analyzing dependencies
    Downloading dependencies
    Installing AFNetworking (2.5.4)
    Installing KVNProgress (2.2.2)
    Installing SDWebImage (3.7.3)
    Generating Pods project
    Integrating client project
    [!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
    Sending stats
    Pod installation complete! There are 3 dependencies from the Podfile and 3 total
    pods installed.
    

    若出现pods installed字样表示安装成功。

  5. 关闭Xcode工程,打开.xcworkspace文件。

  6. 在工程中导入第三库文件,只需要#import 类似的即可,开启CocoaPods之旅。

更多用法参考本文提供的参考链接。

参考链接

  1. http://code4app.com/article/cocoapods-install-usage
  2. http://blog.csdn.net/wzzvictory/article/details/18737437
  3. http://blog.csdn.net/wzzvictory/article/details/19178709

备注:以后在新的项目中使用(在终端中敲入命令)

1.cd +项目的路径
2.pod init
3.vim Podfile(修改这个文件)

CocoaPods_第1张图片
添加第三方
CocoaPods_第2张图片
pod的第三方

4.pod install(出现pods installed表示成功)

CocoaPods_第3张图片
pod成功

5.打开.xcworkspace文件就打开工程了就可使用
6.添加第三方库:点击Pods项目中的Podfile文件添加,然后点击install Pods(这种是安装了一个插件可以显示CocoaPods);如下图

CocoaPods_第4张图片
屏幕快照 2016-01-23 下午4.32.50.png
CocoaPods_第5张图片
屏幕快照 2016-01-23 下午4.33.03.png

删除已安装的第三方库:终端中进入podfile文件 (vi podfile),然后直接去掉即可,再pod install
为省时间也可pods install --no-repo-update(不用每次都去仓库检测,更新...)

添加新库时,也可以添加完用端口敲命令方式(添加完成退出保存:先按esc,然后 :wq)

CocoaPods_第6张图片
屏幕快照 2016-02-23 下午2.27.50.png

添加新库时候还可以直接打开写添加,opten后的图,写完直接关掉:

CocoaPods_第7张图片
屏幕快照 2016-08-18 下午3.17.24.png

6.使用过程中遇到的各种问题Bug

6.1 pod setup更新设置仓库时无法成功,报错如下2种:

[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.
屏幕快照 2018-08-09 上午10.59.05.png
CocoaPods_第8张图片
B544DB561A765B855DEFFC87C34E0A3F.jpg

这些错误说明某些环境原因导致pod更新不了,可能原因有:1)gem版本太低;2)github无法连接;3)cocoapods目录下的配置信息错误;我们可以一个一个来排除

解决办法:

CocoaPods_第9张图片
图片.png
CocoaPods_第10张图片
删除以后重新pod更新,过一段时间更新到100%成功

敲入以上命令时,终端上是这个样子的(由于太长,仅截取前面一部分):

CocoaPods_第11张图片
CocoaPods_第12张图片
CocoaPods_第13张图片

看到这里,说明你已经安装成功了。
相关链接:https://www.jianshu.com/p/90ca71b3b94a

6.2 因为git没有更新造成的问题

CocoaPods_第14张图片
屏幕快照 2017-11-09 上午10.46.55.png
屏幕快照 2017-11-09 上午10.58.45.png
CocoaPods_第15张图片
屏幕快照 2017-11-09 上午10.58.55.png
CocoaPods_第16张图片
屏幕快照 2017-11-09 上午10.59.26.png
CocoaPods_第17张图片
屏幕快照 2017-11-09 上午11.26.43.png

6.3 CocoaPods更新慢的解决办法

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

pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
或者
pod install --no-repo-update
pod update --no-repo-update

cocoaPods安装的一些问题和具体使用
最近发现很多cocoaPods的教程都不太适用,查看此链接或许有帮助:
http://www.jianshu.com/p/5b3ba1297abb

你可能感兴趣的:(CocoaPods)