前言
本文为通识性的文章,并且会不断更新,如果有什么地方不懂的或者有需要补充的以及不太正确之处可以留言,我会补上的,谢谢各位!~
CocoaPods是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目。这样,源码管理工作都从主项目移到了Pods项目中。
- Pods项目最终会编译成一个名为
lisPods.a
的文件,主项目只需要依赖这个.a文件即可。- 对于资源文件,CocoaPods提供了一个名为
Pods-resources.sh
的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。- CocoaPods通过一个名为
Pods.xconfig
的文件来编译时设置所有的依赖和参数。
核心组件
CocoaPods是用ruby写的,并由若干个ruby包(gems)构成。在解析整合的过程中,最终要的几个gems分别是:CocoaPods/CocoaPods、CocoaPods/Core、CocoaPods/Xcodeproj。(CocoaPods是一个依赖管理工具 —— 利用依赖管理进行构建的)
CocoaPods/CocoaPod
这是一个面向用户的组件,每当执行一个pod命令时,这个组件都将被激活。该组件包括了所有使用CocoaPods涉及到的功能,并且还能通过调用左右其他的gems来执行任务。
CocoaPods/Core
Core组件提供支持与CocoaPods相关文件的处理,文件主要是Podfile和podspecs。
podfile
这是一个文件,用于定义项目中所需要使用的第三方库。该文件支持高度定制,你可以根据个人喜好对其作出定制。这里不展开叙述,若想了解更多,可以查看Podfile指南。
Podspec
.podspec
也是一个文件,该文件描述了一个库是怎样被添加到工程中的。它支持的功能有:列出源文件、framework、编译选项和某个库所需要的依赖等。
CocosPods/Xcodeproj
这个gem组件负责所有工程文件的整合。它能够对创建修改xcodeproj
和 .xworkspace
文件。它也可以作为一个单独的gem包使用。如果你想要写一个脚本来方便的修改工程文件,那么可以使用这个gem。
运行pod install
命令
当在运行pod install
命令时,会引发很多操作。如果想要深入了解这个命令执行的详细内容,可以运行 pod install --verbose
。当运行该命令后,会看到类似以下的内容。
$ pod install --verbose
Analyzing dependencies 分析依赖
Updating spec repositories 更新spce仓库
Updating spec repo `master` 更新‘master’分支
$ /usr/bin/git pull
Already up-to-date.
Finding Podfile changes
- AFNetworking
- HockeySDK
Resolving dependencies of `Podfile`
Resolving dependencies for target `Pods' (iOS 6.0)
- AFNetworking (= 1.2.1)
- SDWebImage (=