使用Cocoapods做依赖管理
每种语言发展到一定阶段,都会出现相应的依赖管理工具,例如Java语言的Maven, Node.js的npm等. 下面是IOS项目的依赖管理工具 CocoaPods(http://cocoapods.org/)
CocoaPods 是一个 Cocoa 和 Cocoa Touch 框架的依赖管理器,具体原理和 Homebrew 有点类似,都是从 GitHub 下载索引,然后根据索引下载依赖的源代码。
- CocoaPods的安装
Mac 下自带ruby, 使用ruby的gem命令即可下载安装:
$ sudo gem install cocoapods
$ pod setup
sudo gem update --system
另外,ruby的软件源rubygems.org因为使用亚马逊的云服务,所以屏蔽了,需要更新一下ruby的源,下面的代码将官方的ruby源替换成国内的源:
gem sources --remove https://rubygems.org/
gem sources -a https://gems.ruby-china.org/
gem sources -l
有一点需要注意, pod setup 在执行时,会输出
Setting up CocoaPods master repo
,但是会等待比较久的时间. 这步其实是Cocoapods 在将它的信息下载到 ~/.cocoapods 目录下, 如果你等待太久, 可以试着 cd 到那个目录, 用 du -sh *
来查看下载速度.- 使用 CocoaPods的镜像索引
所有项目的Podspec文件都托管在https://github.com/CocoaPods/Specs. 第一次执行pod setup时, CocoaPods 会将这些Podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有80MB左右.所以第一更新时非常慢,一个叫 akinliu 的开发者 在 gitcafe(http://gitcafe.com/) 和 occhian (http://www.oschina.net/) 上建立了 CocoaPods索引库的镜像,因为gitcafe 和 cochina都是国内的 服务器,所以在执行索引更新操作时,会快很多. 如下操作可以将 CocoaPods设置成使用gitcafe镜像:
旧版本可以使用:
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo updte
将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git即可使用 occhina 上的镜像.
新版的 CocoaPods 不允许用pod repo add直接添加master库了,但是依然可以:
$ cd ~/.cocoapods/repos
$ pod repo remove master
$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master
最后进入自己的工程,在自己工程的podFile第一行加上:
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
国内各种软件镜像源 : https://t.goodrain.com/t/topic/236
- 使用CocoaPods
使用时需要新建一个名为Podfile的文件 ,将依赖库的名字列在文件中即可. 然后 cd 到你的工程目录下,执行pod install
即可
当第三方库下载完成会自动设置好编译参数和依赖. 后面在使用过中只需记住:
1>. 使用CocoaPods 生成的 *.xcworkspace文件来打开工程,而不是以前的 *.xcodeproj文件.
2>. 每次更改了 Podfile文件, 都需要重新执行一次 pod update 命令.
- 关于.gitignore
当执行 pod install 之后, 除了 Podfile外, CocoaPods还会生成一个名为 Podfile.lock的文件, 不要把这个文件加入到.gitignore中. 因为 Podfile.lock 会锁定当前各种依赖库的版本, 之后即使多次执行 pod insatll 也不会更改版本 只有执行 pod update 才会改变 Podfile.lock. 在多人协作的时候, 这样可以防止第三方库升级时造成大家各自的第三方库版本不一致.
- 【使用Cocoapods做依赖管理】不更新 podspec
CocoaPods 在执行 pod install 和 pod update 时, 会默认先更新一次 podspec 索引. 使用 --no-repo-update 参数 可以禁止其他做索引更新操作.
pod install --no-repo-update
pod update --no-repo--update
- 原理
CocoaPods的原理是将所有的依赖库都放到另一个名为 Pods的项目中, 然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了 Pods项目中.
1>. Pods项目最终会编译成一个名为libPods.a的文件, 主项目只需要依赖这个.a文件即可.
2>. 对于资源文件, CocoaPods提供了一个名为Pods-resources.sh 的bash脚本, 该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中.
3>. CocoaPods通过一个名为 Pods.xcconfig 的文件在编译时设置所有的依赖和参数.
推荐阅读
- 我要做大厨
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 我从来不做坏事
- 由浅入深理解AOP
- 子龙老师语录
- 做一件事情的基本原理是什么()
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询