目录

CocoaPods都做了什么

CocoaPods都做了什么:1、支持插件;2、支持私有库;3、版本管理;4、分析依赖。支持插件是指CocoaPods提供了各种插件,可以定制化依赖管理过程。支持私有库是指开发人员可以通过CocoaPods上传自己的私有库。

一、CocoaPods都做了什么

1、支持插件

CocoaPods提供了各种插件,可以定制化依赖管理过程,如将Podfile转换成其他依赖管理格式等。

2、支持私有库

开发人员可以通过CocoaPods上传自己的私有库,方便团队内部共享使用,并且可以限制访问权限。

3、版本管理

CocoaPods会记录每个依赖库的版本信息,开发人员可以指定使用特定版本的库,适配自己的项目需求。

4、分析依赖

CocoaPods支持通过命令行或网页来分析依赖关系,便于理解和管理整个项目中各个依赖库之间的关系。

二、CocoaPods

1、CocoaPods 是什么

CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPods 的项目源码在 GitHub( https://github.com/CocoaPods )上管理。开发 iOS 项目不可避免地要使用第三方开源库,在使用第三方库时,除了需要导入源码,集成这些依赖库还需要我们手动去配置,还有当这些第三方库发生了更新时,还需要手动去更新项目,这就显得非常麻烦。而 CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间,通过 CocoaPods,我们可以将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成。

2、CocoaPods 的原理

CocoaPods 的原理是将所有的依赖库都放到另一个名为 Pods 的项目中,然后让主项目依赖 Pods 项目,这样就把源码管理工作从主项目移到了 Pods 项目中。

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

3、CocoaPods 的核心组件

CocoaPods 是用 Ruby 写的,并划分成了若干个 Gem 包。与 CocoaPods 相关的两个目录:

  • ~/.CocoaPods/repos/:这个目录存储远端的 podspec 文件到本地。master 是所有第三方的 podspec 索引文件。其它的是我们自定义的 podspec 索引文件。
  • ~/Library/Caches/CocoaPods/:这个目录就是缓存文件的存储目录。

CocoaPods 在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、CocoaPods/Core 和 CocoaPods/Xcodeproj:

  • CocoaPods/CocoaPods:这是面向用户的组件,每当执行一个 pod 命令时,这个组件将被激活。它包括了所有实用 CocoaPods 的功能,并且还能调用其它 Gem 包来执行任务。
  • CocoaPods/Core:Core Gem 提供了与 CocoaPods 相关的文件(主要是 Podfile 和 Podspecs)的处理。其中Podfile用于配置项目所需要的第三方库,它可以被高度定制;Podspecs描述了一个库将怎样被添加进工程中。.podspec 文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。
  • CocoaPods/Xcodeproj:这个包负责处理工程文件,它能创建以及修改 .xcodeproj 文件和 .xcworkspace 文件。它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用 CocoaPods/Xcodeproj。

4、CocoaPods给我们带来的好处

  • 该工具是开源的,在GitHub上可查;
  • 通过CocoaPods配置文件,可方便引入所需第三方开源库;
  • 第三方库版本管理简单,升级容易;
  • 方便查找第三方库(官网 or 命令行);
  • 一般的项目都是团队合作,团队成员只需安装该工具就能完成第三方库引入(无需每人都做1.3中的步骤);
  • 制作公共库,并发布至CocoaPods上,其他人可方便使用。

三、常用的开发IOS项目第三方库

  • JSPatch:热修复,为项目动态添加模块,或替换项目原生代码动态修复 bug
  • ReactiveCocoa: 函数响应式编程,使用 MVVM 搭
  • RxSwift:Swift 函数响应式编程框架。
  • BlocksKit: blocks 包,喜欢用 Block的非常适合,学习 block 的好库。
  • JKCategories:iOS 中常用到的 Category ,可以好好学习
  • YYKit:庞大、丰富的 iOS 组件,也是学习的好地方。
  • CocoaAsyncSocket:异步 socket 通讯类库
  • GPUImage:图片过滤
  • AsyncDisplayKit:将图像解码、布局以及渲染操作放在后台线程,带来更好的用户交互体验的框架。
  • PromiseKit : 一个用来出来异步的编程框架(Swift)

延伸阅读1:安装cocoapods的命令

sudo gem install cocoapods (osx 10.11以前)
sudo gem install -n /usr/local/bin cocoapods (10.11后苹果升级了安全策略)