Podfile
Podfile文件是个描述Xcode的一个或者更多个的工程的Target相关性的说明文档。原文地址
一个最简单过的Podfile例子:
target 'MyApp'
pod 'AFNetworking', '~> 1.0'
更为复杂的Podfile文件的例子
platform :ios, '9.0'
inhibit_all_warnings!
target 'MyApp' do
pod 'ObjectiveSugar', '~> 0.5'
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
根选项(Root Options)
适用于该Podfile作为一个整体结构。
-
install!
在安装过程中要使用的声明的安装方法和选项
安装!(install!!)
指定当的CocoaPods安装此Podfile要使用的安装方法和选项。
第一个参数表示要使用的安装方法;
下一个参数指示安装选项。
现在唯一可接受的安装方法'cocoapods'
,所以你总是使用第一个参数的设定值; 但更多的安装方法可能会在未来版本中。
例子:
指定自定义的CocoaPods安装选项
install! 'cocoapods' ,
:deterministic_uuids => false ,
:integrate_targets => false
所支持的关键词:
:clean
:deduplicate_targets
:deterministic_uuids
:integrate_targets
:lock_pod_sources
:share_schemes_for_development_pods
依赖 (Dependencies)
该Podfile指定每个用户目标的相关性。
-
pod
是定义一个特定的依赖的方式。 -
podspec
提供了用于很容易的创建podspecs的API。 -
target
是提供给如何审视的dependencies(依赖)在Xcode工程中的特定Targets。
pod
指定项目的依赖。
依赖关系要求由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
0.1版和所有低版本。 -
~> 0.1.2
0.1.2和版本到0.2,但不包括0.2。在此基础上运营工作的 最后一个组件 您在版本要求指定的例子是等于>= 0.1.2结合< 0.2.0和将总是匹配最新已知版本符合要求。
版本要求列表可以用于更细粒度的控制规定。
构建配置(Build configurations)
默认的依赖都安装在Target的所有构建配置。用于调试目的或其他原因,它们可以仅生成配置的列表上启用。
pod 'PonyDebugger', :configurations => ['Debug', 'Beta']
或者,您可以指定将它包含在一个单一的构建配置中。
pod 'PonyDebugger', :configuration => 'Debug'
需要注意的是可传递依赖包括在所有配置中,你必须手动指定搭建为他们配置同样的这种情况是不被期望出现的。
子配置文件(Subspecs)
当通过pod名字安装时,它将安装在podspec定义了的所有的默认subspecs。
当然,你可以利用下安装特定subspec:
pod 'QueryKit/Attribute'
也可以指定要安装如下subspecs的集合:
pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
依赖也可以从外部来源获得。
使用本地文件路径
如果你想要在串行的客户工程中开发一个Pod,那么你可以使用本地路径
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
当然使用这种CocoaPods的选项的前提是,指定的路径文件夹是在Pods的根目录中,它将被直接连接到Pods的工程中。这也意味着你的编辑将持续同步到CocoaPods安装。
被引入的文件可能是你喜欢的项目供应链(SCM)中的一份checkout,或者是当前repository 的一个子git模块。
Note:Pod文件的podspec是应该在这个文件中的。
来自根仓库的一个podspec
有些时候你也许会想使用Pod的一个边缘版本或者一个特定的版本,在这种情况下,你需要在Pod中特别的声明。
// 使用repository的master
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
// 使用repository的一个不同brand
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
// 使用repository的一个tag
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
// 使用repository的一个commit
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
需要注意的是,尽管这意味着通过其他Pod,这个版本将必须满足其他依赖在个这个Pod上。这个podspec文件期望在仓库的根目录中,如果这个library在这个仓库中没有podspec文件,你必须使用在下面sections中的一个方法概括。
为一个没有podspec的文库引用外部的一个spec仓库的podspec
如果通过其他资源的外部库文件仓库可以得到一个podspec的,那么,可以使用它,比如通过HTTP获得一个podspec。
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
网友评论