[CocoaPods]
CocoaPods是什么?
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。
为什么建议使用CocoaPods
通常,当我引入第三方类库的时候需要
第一:复制开源库的源码文件到项目中去;
第二:添加开源库依赖的系统的framework;
第三,对于不同的开源库,配置相应的编译参数(例如-fno-objc-arc,-licucore等等);
第四:管理这些依赖包的更新。
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
安装
- 执行命令行
$ sudo gem install cocoapods
安装结束的时候执行
$ pod setup(国内访问时间install过长,可以用2替换)
2.执行命令行
$ gem sources --remove https://rubygems.org/
等有反应之后再敲入以下命令
$ gem sources -a http://ruby.taobao.org/
要想验证是否替换成功了,可以执行:
$ gem sources -l
正常的输出是:
*** CURRENT SOURCES ***
http://ruby.taobao.org/
若因为root权限问题,shift+commd+G,进入文件/usr/local/lib/,启动pod
- cd 你的文件夹路径的上一级目录。
- sudo chmod -R 777 你的文件夹名。
- 输入密码。
4.成功。
https://juejin.im/post/5afa542ff265da0b863665a6 pod Specs镜像
使用
1.创建Podfile
$ cd 工程文件夹拖过来
$
touch Podfile 或者 pod init
此时工程根目录会多一个空白Podfile文件
编辑册此目录文件
platform :ios
pod ‘Reachability’, ‘~> 3.0.0’
pod ‘SBJson’, ‘~> 4.0.0’
platform :ios, ‘7.0’
pod ‘AFNetworking’, ‘~> 2.0’
写法
pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘> 2.0’ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>= 2.0’ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘< 2.0’ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<= 2.0’ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~> 0.1.2’ //使用大于等于0.1.2但小于0.2的版本
pod ‘AFNetworking’, ‘~>0.1’ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0’ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版
2.安装xcworkspace
确保工程是关闭的状态
$ cd 文件夹拖过来
$
pod install
pod install --verbose --no-repo-update
当打印完成
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.1.0)
Installing JSONKit (1.5pre)
Installing Reachability (3.0.0)
Generating Pods project
Integrating client project
[!] From now on use CocoaPodsTest.xcworkspace
.
说明执行成功了,需要使用.xcworkspace文件来开发
CocoaPods常用命令
1、pod install
(Podfile文件写完执行pod install)
根据Podfile文件指定的内容,安装依赖库,如果有Podfile.lock文件而且对应的Podfile文件未被修改,则会根据Podfile.lock文件指定的版本安装。
每次更新了Podfile文件时,都需要重新执行该命令,以便重新安装Pods依赖库。
2、pod update
(以后要是更改了Podfile文件,得重新执行一次 pod update 命令)
若果Podfile中指定的依赖库版本不是写死的,当对应的依赖库有了更新,无论有没有Podfile.lock文件都会去获取Podfile文件描述的允许获取到的最新依赖库版本。
查找第三方库
$ pod search json
$q UP dewn
platform :ios, ‘8.0’
target "ReactiveCocoaDemo" do
end
pod 'ReactiveCocoa', '2.5'
pod 'Masonry', '~> 1.0.1'
-> AnyJSON (0.0.1)
Encode / Decode JSON by any means possible.
- Homepage: https://github.com/mattt/AnyJSON
- Source: https://github.com/mattt/AnyJSON.git
- Versions: 0.0.1 [master repo]
-> JSONKit (1.5pre)
A Very High Performance Objective-C JSON Library.
- Homepage: https://github.com/johnezang/JSONKit
- Source: git://github.com/johnezang/JSONKit.git
- Versions: 1.5pre, 1.4 [master repo]
最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动
原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:
原因是本地的repo库太长时间没有更新了or没有找到本地的repo库or本地的repo库不是最新匹配的 需要时用
pod install、pod update
不管是否是第一次向项目中导入pod库,只要项目中添加或移除pod库,都要调用pod install,只有当你想要更新pod库的版本时才使用pod update.
pod install --verbose --no-repo-update
pod update --verbose --no-repo-update
去忽略 本地的repo库的升级操作
如果想单独update升级一个的话,podsearch找到这个库,先给他指定版本 pod ‘TwitterKit5’, ‘~> 5.2.0’
pod 操作过后异常 ,但是版本控制并未发现修改
删除本地podfile.lock
pod deintegrate
pod clean