1、查看CocoaPods 安装地址(例如:/usr/local/bin/pod)
which pod
2、查看CocoaPods版本(例如:1.9.1)
pod --version
3、查看gem源(例如:https://gems.ruby-china.com/)
gem sources -l
4、更新本地索引库
pod repo update
5、 只更新某个库(例如afn)
pod update AFNetworking
一、Podfile
Podfile
是一个用来描述项目中Target的依赖的文件
一个简单的Podfile
文件
target 'MyApp' do
use_frameworks!
pod 'Alamofire', '~> 3.0'
end
1、
1、 use_frameworks!
: 在Podfile里使用use_frameworks
的话,是通过frameworks的方式来管理pod代码,不配置的话,使用Static Libraries
的方式来管理 2、 在pod中导入Swift框架到Swift或者OC项目,都需要使用use_frameworks!
,因为Swift不支持静态库 3、 使用Dynamic frameworks,必须要在Podfile文件中添加use_frameworks!
4、 在Podfile文件中,不使用use_frameworks!
是,则会生成响应的.a
文件(静态链接库),通过静态库的方式管理Pod代码 5、 使用use_frameworks!
时,则会生成.framework
文件(动态链接库:Header+动态链接库+资源文件),使用Dynamic Frameworks来取代Static Libraries
在Xcode 9,CocoaPods1.5.0之后,Swift支持静态库,最主要的优势加快启动时间
2、多个Target共用Pods,使用abstract_target
abstract_target 'Shows' do
pod 'ShowsKit'
pod 'Fabric'
target 'ShowsiOS' do
pod 'ShowWebAuth'
end
target 'ShowsTV' do
pod 'ShowTVAuth'
end
end
3、指定Pod版本
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', '~> 0.1.2' // 使用高于等于0.1.2但低于0.2的版本
Pod 'AFNetworking', '~> 0.1' // 使用高于等于0.1但低于1.0的版本
Pod 'AFNetworking', '~> 0' // 高于0的版本,等于没写
4、使用自定义的fork
有时候需要对库进行自定义修改,这时候就需要具体说明Pod的描述
使用master分支
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git'
使用非master分支下的repo
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'dev'
使用指定tag
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :tag => '3.1.1'
值得注意的是,这意味着改版本必须满足Pod对于其他Pod的依赖关系。
二、Podfile 和 Podfile.lock
Podfile 和 Podfile.lock 两者的区别是,一个文件中有框架的版本信息, 一个没有
pod install
使用此指令,如果项目中存在Podfile.lock,那么就直接从此文件中读取框架信息下载安装,如果不存在,那么就读取Podfile文件中的框架信息下载安装,下载完成后, 生成对应的Podfile.lock文件
pod update
使用此命令,不管Podfile.lock是否存在,都会读取Podfile文件中的框架信息进行下载