一. Pod install!
- 定义了CocoaPods安装podfile时的方式和选项
第一个参数指定了安装的方式,下面的参数制定了安装的选项
但是目前的CocoaPods只支持cocoapods
,所以你的第一个参数只能填cocoapods
,更多的参数会在未来的版本才支持
举个
install! 'cocoapods',
:deterministic_uuids => false,
:integrate_targets => false
Supported Keys:
- :clean
默认true
安装的时候是否要清除pods里面无效的资源 - :deduplicate_targets
默认true
是否支持多targets
target 'MyTargetA' do
pod 'MyPod/SubA'
endtarget 'MyTargetB' do
pod 'MyPod'
end
- :deterministic_uuids
默认true
创建Pods project 是否生成一个确定的UUID - :integrate_targets 默认true
是否把pods集成到用户的工程下 如果这是为false,Pods将被下载并安装到
Pods/ `文件夹下,但是它们不会集成到你的工程中 - :lock_pod_sources
默认true
是否锁住pods的源文件。如果锁定的话,当你在pods的源文件中修改内容时会弹窗警告。
在安装过程中锁定 pod 会降低性能。 如果这对您的项目的 pod install 的持续时间有显着影响,您可以尝试将其设置为 false - :warn_for_multiple_pod_sources
默认true
当多个源包含具有相同名称和版本的 Pod 时是否发出警告 - :warn_for_unused_master_specs_repo
默认true
如果项目没有明确指定基于 git 的主规范存储库,则会发出警告 - :share_schemes_for_development_pods
默认false
Whether to share Xcode schemes for development pods.
Schemes for development pods are created automatically but are not shared by default. - :disable_input_output_paths
默认false
是否禁用 CocoaPods 脚本阶段的输入和输出路径(Copy Frameworks & Copy Resources) - :preserve_pod_file_structure
默认false
是否保留所有 Pod 的文件结构,包括外部来源的 Pod。
By default, the file structure of Pod sources is preserved only for development pods.
默认的,只有在development pods模式下才会维护pod的源文件的结构。
如果打开该选项,会维护所有的包括第三方的pod的文件结构 - :generate_multiple_pod_projects
默认false
是否为每个 pod 目标生成一个项目。 与创建 1 个 Pods.xcodeproj 不同,此选项将为每个嵌套在 Pods.xcodeproj 下的 Pod 目标生成一个项目。 - :incremental_installation
默认false
是否只安装 上次安装后更改的pod库 - :skip_pods_project_generation
默认false
是否跳过生成 Pods.xcodeproj 而只执行依赖解析和下载。
二.ensure_bundler!
不解释
三.Pod
- Build configurations
默认dependencies会被安装在target的所有设置项里面,但你也可以单独设置这些选项,如下所示
pod 'PonyDebugger', :configurations => ['Debug', 'Beta']
pod 'PonyDebugger', :configuration => 'Debug'
- Modular Headers
你想为每个pod使用模块化的头,可以使用pod 'SSZipArchive', :modular_headers => true
如果你使用了use_modular_headers!
,就代表每个pod都使用了模块化的头,可以使用pod 'SSZipArchive', :modular_headers => false
排除某个pod - Subspecs
spec 美[spek] 投机;说明书;细则
pod 'QueryKit/Attribute'
pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
- Test Specs
pod 'AFNetworking', :testspecs => ['UnitTests', 'SomeOtherTests']
- From a podspec in the root of a library repository.
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
四. script_phase
可以执行脚本
script_phase :name => 'HelloWorldScript', :script => 'echo "Hello World"'
script_phase :name => 'HelloWorldScript', :script => 'puts "Hello World"', :shell_path => '/usr/bin/ruby'
五.Target configuration
- platform
platform :ios, '4.0'
The name of platform, can be either :osx for OS X, :ios for iOS, :tvos for tvOS, or :watchos for watchOS.
- use_modular_headers!
对所有 CocoaPods 静态库使用模块化头文件。 - use_frameworks!
为 Pod 使用框架而不是静态库。使用框架时,您还可以指定要使用的 :linkage 样式,即 :static 或 :dynamic。
target 'MyApp' do
use_frameworks! :linkage => :dynamic
pod 'AFNetworking', '~> 1.0'
endtarget 'ZipApp' do
use_frameworks! :linkage => :static
pod 'SSZipArchive'
end
- supports_swift_versions
Specifies the Swift version requirements this target definition supports.
指定此目标定义支持的 Swift 版本要求。
target 'MyApp' do
supports_swift_versions '>= 3.0', '< 4.0'
pod 'AFNetworking', '~> 1.0'
end
六. Hooks
- plugin
plugin 'cocoapods-keys', :keyring => 'Eidolon'
plugin 'slather'
- pre_install
适用时间:pods的代码被下载成功但还没有进行安装
pre_install do |installer|
Do something fancy!
end
- pre_integrate
项目被写到磁盘之前
pre_integrate do |installer|
perform some changes on dependencies
end
- post_install
适用时间:生成了Xcode project但是还没有写入到磁盘
它接收 [Pod::Installer] 作为其唯一参数。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
end
end
end
- post_integrate
适用时间:project已经被写入到了磁盘
post_integrate do |installer|
some change after project write to disk
end