Podfile使用说明
什么是Podfile ?
CocoaPods是用ruby实现的,因此Podfile文件的语法就是ruby的语法。
podfile是一个说明文件,用以描述管理一个或者多个Xcode project的target的依赖库。这个文件应该且必须被命名为Podfile
。
Podfile可以非常简单,下面的例子增加了Alamofire依赖库到单个target:
target 'MyApp' do use_frameworks! pod 'Alamofire', '~> 3.0' end
下面是一个更复杂的例子,Podfile链接了app和它的测试bundle:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Artsy/Specs.git'platform :ios, '9.0' inhibit_all_warnings! target 'MyApp' do pod 'GoogleAnalytics', '~> 3.1' # Has its own copy of OCMock # and has access to GoogleAnalytics via the app # that hosts the test target target 'MyAppTests' do inherit! :search_paths pod 'OCMock', '~> 2.0.1' end end post_install do |installer| installer.pods_project.targets.each do |target| puts target.name end end
如果你希望多个target共享同一个pods,那么可以用关键字abstract_target
:
# There are no targets called "Shows" in any Xcode projects
abstract_target 'Shows' do pod 'ShowsKit' pod 'Fabric' # Has its own copy of ShowsKit + ShowWebAuth target 'ShowsiOS' do pod 'ShowWebAuth' end # Has its own copy of ShowsKit + ShowTVAuth target 'ShowsTV' do pod 'ShowTVAuth' end end
Podfile中自带一个隐藏的、默认的abstract target
,所以你也可以用如下的方式达到上面例子的同样效果:
pod 'ShowsKit'
pod 'Fabric'# Has its own copy of ShowsKit + ShowWebAuth
target 'ShowsiOS' do pod 'ShowWebAuth' end # Has its own copy of ShowsKit + ShowTVAuth target 'ShowsTV' do pod 'ShowTVAuth' end
指定pod版本
当开始一个项目,你可能会想要使用最新版本的pod依赖库。 如果是这种情况,只需忽略版本要求。
pod 'SSZipArchive'
稍后在项目您可能想要使用特定版本的pod依赖库,在这种情况下,您可以指定版本号。
pod 'Objection', '0.9'
除了没有版本,或特定的一个,也可以使用逻辑运算符:
- '> 0.1' 高于0.1的任何版本
- '>= 0.1' 版本0.1或更高版本
- '< 0.1' 低于0.1的任何版本
- '<= 0.1' 版本0.1或更低的版本
除了逻辑运算符,还有一种运算符:
- '~> 0.1.2' 版本0.1.2和0.2版本之间的任意版本,不包括0.2和比0.2更高的版本
- '~> 0.1' 版本0.1和版本1.0之间的任意版本,不包括1.0和比1.0更高的版本
- '~> 0' 版本0或比版本0更高的版本,这基本上和不指定版本号的效果是一样的。
使用本地文件夹内的依赖库
如果你想建立一个本地依赖库和项目之间的关系,即项目依赖本地文件夹的某个依赖库,可以用关键字path
:
pod 'Alamofire', :path => '~/Documents/Alamofire'
使用podspec更新依赖库
使用仓库的master分支:
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git'
使用仓库中其他的分支:
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git'
使用指定tag的分支:
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :tag => '3.1.1'
或者使用指定commit号的版本:
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :commit => '0f506b1c45'
使用path
将把本地文件夹作为pod依赖库的源,并且将会直接从给定的文件夹中把pod依赖库链接进pod项目。这意味着我们对这个本地文件夹的编辑与修改将会被pod直接更新。
source 'URL' : 指定镜像仓库的源
platform : ios, '6.0' : 指定所支持系统和最低版本
inhibit_all_warnings! :屏蔽所有warning
workspace '项目空间名': 指定项目空间名
xcodeproj '工程文件名':指定xcodeproj工程文件名
~ > : 从指定版本到倒数第二位版本号升1为止,比如 '~> 1.2.1'是指 1.2.1 <= 版本 < 1.3.0。'~>1.2'是指1.2<= 版本 < 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的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
CocoaPods pod install/pod update更新慢的问题
/默认执行pod install 或者 pod update命令,会更新远程cocopodsde spec库。所以导致命令执行的比较慢,我们可以采用以下命令来提高更新速度,不更新CocoaPods的spec仓库直接install/update。
pod update --verbose --no-repo-update
pod install --verbose --no-repo-update
Podfile和Target
Podfile本质上是用来描述Xcode工程中的targets用的。如果我们不显式指定Podfile对应的target,CocoaPods会创建一个名称为default的隐式target,会和我们工程中的第一个target相对应。换句话说,如果在Podfile中没有指定target,那么只有工程里的第一个target能够使用Podfile中描述的Pods依赖库。
项目存在多Target情况
项目存在多个Target的时候,需要配置Podfile文件来支持新增加的Target,否则只支持项目默认建立时生成的Target:
a.多个Target使用相同的pods依赖库
a、默认新建的项目只有一个target,但是我们可以给项目天阿基额外的target。如果项目中存在多个target,且两个Target所依赖的的第三方库完全相同,则可以使用
link_with
关键字,将Podfile写成如下方式:
link_with 'CocoaPodsTest', 'Second'
platform :ios
platform :ios, ‘9.0’ pod 'AFNetworking', '~> 2.0'
或
link_with 'CocoaPodsTest', 'Second'
platform :ios
pod 'Reachability', '~> 3.0.0' pod 'SBJson', '~> 4.0.0' platform :ios, '7.0' pod 'AFNetworking', '~> 2.0'
如果你按照上面的写法编辑Podfile,然后执行pod undate 或pod install,你会发现以下的错误:
![](http://upload-images.jianshu.io/upload_images/1055199-ea6a45d3bebee5ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
意思是link_with
关键字已经过期,现在不在支持,我们需要用target blocks来代替link_with
。查看官方文档,如下:
![](http://upload-images.jianshu.io/upload_images/1055199-f233959a119a7749.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
所以,我们可以通过abstract_target
和target继承的方式代替link_with
.
b.多个的Target需要不同的依赖库
如果不同的target使用不同的依赖库,则可以:
platform :ios
target :'Test' do pod 'Reachability' pod 'SBJson' pod 'AFNetworking' end target :'Second' do pod 'OpenUDID' end
inhibit_all_warnings!的作用
用于屏蔽cocoapods库里面的所有警告。
![](http://upload-images.jianshu.io/upload_images/1055199-bf4f8faec53c15cf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这个特性也能在子target里面定义,如果你想屏蔽某pod里面的警告也是可以的:
pod 'SSZipArchive', :inhibit_warnings => true
use_frameworks!的作用
在pods中用frameworks替代静态库。
另,一般开发swift项目时,我们会在podfile中添加这一句。
podspec文件
后缀名为podspec(cocoapods specification)的文件是cocoapods的说明文件,该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有那么一个描述文件。该文件包括依赖库的名字、版本、描述、license、author、source、platform等信息。
其他链接:
Podfile语法参考(译)
Cocoapods的Podfile常见语法总结
CocoaPods详解之----使用篇
CocoaPods详解之----进阶篇
CocoaPods详解之----制作篇
CocoaPods安装和使用教程以及一些常见问题
如何制作自己的Pod库
The Podfile(英)
Podfile语法参考(译)
(实验)Podfile的target与link_with
Podfile Syntax Reference(英)
Podfile Syntax Reference(英)
转载于:https://www.cnblogs.com/wsnb/p/6163365.html
Podfile使用说明相关推荐
- Bugtags 使用说明
Bugtags 使用说明 温馨提示:这篇文档可能会花费你 10 分钟左右的时间阅读完成,但我们相信这 10 分钟你将有所收获, 在介绍如何使用之前,先看看 Bugtags 到底是做什么的吧! 如果你只 ...
- BugTags使用说明以及安装搭建步骤
整理下官网的文档分享给大家,希望对大家有帮助 Bugtags 使用说明 2015-11-26 BUGTAGS 使用手册 用户反馈 移动测试 目录 1. Bugtags 是什么? 1.1. 移动应用 B ...
- abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...
高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF 高性能计算平台ABAQUS 任务调度使用说明 作者:陈林 E-Mail:chenlin@ 日期:2017-1-10 ...
- linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...
cmd replace 文件替换使用说明 帮助信息: 复制代码 代码如下: 替换文件. REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [ ...
- Simple Dynamic Strings(SDS)源码解析和使用说明二
在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...
- 关于Cocoa Pods的升级安装和使用说明
前段时间要使用Cocoa Pods ,安装时发现Ruby版本过低导致安装失败, 查找教程解决后又出现Cocoa Pods新版本导致的问题, 以下给出解决办法: 一 . 升级Ruby 1.安装RVM R ...
- Your Podfile has had smart quotes sanitised
2019独角兽企业重金招聘Python工程师标准>>> 1.无论是执行pod install还是pod update都卡在了Analyzing dependencies 或者 Upd ...
- Podfile 常见语法
source 'URL' : 指定镜像仓库的源 platform : ios, '6.0' : 指定所支持系统和最低版本 inhibit_all_warnings! :屏蔽所有warning w ...
- Delphi开发的IOCP测试Demo以及使用说明。
Delphi开发的IOCP,此为压力测试Demo和使用说明.
- 如何将github上的 lib fork之后通过podfile 改变更新源到自己fork的地址
解决办法: http://stackoverflow.com/questions/20936885/cocoapods-and-github-forks 就是fork完后,提交更改到自己的github ...
最新文章
- 今天聊聊分布式锁 No.86
- leetcode算法题--最长快乐字符串★
- eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean
- hdu 4289(最小割最大流定理)
- 什么是nginx负载均衡高可用
- 牛客网_PAT乙级_1016程序运行时间(15)
- Qt自定义数据类型注册meta-object system
- Java0steam_Java学习 - Stream 使用
- mysql 装载dump文件_mysql命令、mysqldump命令找不到解决
- HDU6092——Rikka with Subset 【dp】
- 在…视域下是什么意思_电影中出现的出品人是什么意思?你需要了解下
- 腾讯校园招聘笔试 2019-8-17 第四题 另一种解法
- ‘git‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 【科普】你所不了解的SWF文件
- 在龙芯1c上使用rt-thread统一标准的spi接口
- 工具 | IDEA 设置为护眼的豆沙绿
- 汇编语言 程序设计 顺序结构
- 微信小程序 逆向还原
- 云计算机怎么分盘,电脑硬盘怎么分区
- 【无标题】体验scratch海底世界
热门文章
- Android教程 第五章 常用UI界面控件
- 【强化学习】CARLA——Windows安装
- oracle rollup 排序,oracle分组函数之ROLLUP演示
- windows10安装CUDA
- Caffe官方例程之 特征可视化python代码 (filter visualization notebook)
- 用PyTorch实现一个卷积神经网络进行图像分类
- ConcurrentHashMap!你居然不知道1.7和1.8可不一样?!
- mysql索引卡死_SQL2000数据库运行缓慢、卡、死锁!请重建索引!
- 机器学习 python 随机抽样random sampling 代码
- C++ (void)_r;什么意思