Podfile
Podfile
是一個規(guī)范,描述了一個或多個 Xcode
工程中 targets
的依賴關(guān)系毙玻。
Podfile
可以非常簡單:
target 'MyApp'
pod 'AFNetworking', '~> 1.0'
更復(fù)雜的 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
整體應(yīng)用于 Podfile
的配置。
-
install!
聲明安裝期間要使用的安裝方法和選項廊散。
install!
指定 CocoaPods
安裝此 Podfile
時要使用的安裝方法和選項桑滩。
第一個參數(shù)表示要使用的安裝方法;下一個參數(shù)表示安裝選項允睹。
目前唯一可接受的安裝方法是 cocoapods
运准,所以你總是將這個值用作第一個參數(shù);但是在將來的版本中可能會提供更多安裝方法缭受。
示例:
指定自定義
CocoaPods
安裝選項
install! 'cocoapods',
:deterministic_uuids => false,
:integrate_targets => false
支持的keys:
以下選項默認(rèn)值均為 true
:clean
:deduplicate_targets
:deterministic_uuids
:integrate_targets
:lock_pod_sources
:warn_for_multiple_pod_sources
以下選項默認(rèn)值均為 false
:share_schemes_for_development_pods
:disable_input_output_paths
:preserve_pod_file_structure
Dependencies
Podfile
指定每個用戶 target
的依賴關(guān)系胁澳。
-
pod
聲明一個特定依賴項 -
podspec
提供一個簡單的API來創(chuàng)建podspecs
-
target
是您如何將依賴項定位到Xcode項目中的特定目標(biāo)
pod
指定項目的依賴項。
一個依賴項通過Pod的名稱和可選的版本號定義米者。
當(dāng)項目開始的時候韭畸,您可能希望使用最新版本的Pod。 如果是這種情況蔓搞,只需省略版本號即可胰丁。
pod 'SSZipArchive'
在后續(xù)項目中,您可能希望凍結(jié)到Pod的特定版本喂分,在這種情況下锦庸,您可以指定該版本號。
pod 'Objection', '0.9'
除了沒有版本或特定的版本蒲祈,也可以使用運(yùn)算符:
-
= 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之間的任何版本梆掸;此運(yùn)算符基于您在版本要求中指定的最后一個組件工作扬卷。該示例等同于>= 0.1.2
并且< 0.2.0
并且將始終匹配符合您要求的最新已知版本。
可以指定版本要求列表以進(jìn)行更細(xì)粒度的控制酸钦。
有關(guān)版本控制策略的更多信息邀泉,請參閱:
Build configurations
默認(rèn)情況下,依賴項安裝在 target
的所有構(gòu)建配置中钝鸽。 有時出于調(diào)試目的或其他原因,僅只能在某個構(gòu)建配置列表中啟用它們庞钢。
pod 'PonyDebugger', :configurations => ['Debug', 'Beta']
或者拔恰,您可以指定將其包含在單個構(gòu)建配置中
pod 'PonyDebugger', :configuration => 'Debug'
請注意,除非您已手動為它們指定構(gòu)建配置基括,否則傳遞依賴項包含在所有配置中時颜懊。
Modular Headers
如果您想為每個 Pod
使用模塊化標(biāo)頭,可以使用以下語法:
pod 'SSZipArchive', :modular_headers => true
另外,當(dāng)你使用 use_modular_headers!
屬性時河爹,您可以使用以下方法從模塊化標(biāo)頭中排除特定的Pod:
pod 'SSZipArchive', :modular_headers => false
Source
示例:
Specifying to first use the Artsy repository and then the CocoaPods Master Repository.
source 'https://github.com/artsy/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'
默認(rèn)按指定源全局搜索依賴項匠璧,也可以給特定依賴項指定源:
pod 'PonyDebugger', :source => 'https://github.com/CocoaPods/Specs.git'
在這種情況下,將僅搜索指定的源以查找依賴項咸这,并忽略任何全局源夷恍。
Subspecs
通過名稱安裝Pod時,它將安裝 podspec
中定義的所有默認(rèn) subspecs
媳维。
您可以使用以下方法安裝特定的 subspec
:
pod 'QueryKit/Attribute'
您可以指定要安裝的子規(guī)范集合酿雪,如下所示:
pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet']
依賴性也可以從外部來源獲得。
使用本地路徑文件
使用 path
選項
pod 'AFNetworking', :path => '~/Documents/AFNetworking'
使用此選項侄刽,CocoaPods
將假定給定的文件夾是 Pod
的根目錄指黎,并將直接從 Pods
項目中的鏈接文件。這意味著您的編輯將持久保存到 CocoaPods
安裝州丹。
請注意醋安,Pod
文件的 podspec
應(yīng)該位于該文件夾中。
來自遠(yuǎn)程倉庫根目錄中的podspec
有時您可能想要使用Pod
的最新版本墓毒,或者是特定的版本吓揪。 如果是這種情況,您可以使用pod
聲明指定蚁鳖。
使用倉庫 master
分支:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
使用倉庫其他分支:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
使用倉庫的某個 tag
:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
或指定 commit
:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
podspec
文件應(yīng)該位于存儲倉庫的根目錄中磺芭,如果該倉庫沒有 podspec
文件,則必須使用以下方法之一指定醉箕。
From a podspec outside a spec repository, for a library without podspec:
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'
podspec
示例:
podspec
podspec :name => 'QuickDialog'
podspec :path => '/Documents/PrettyKit/PrettyKit.podspec'
target示例
Defining a target
target 'ZipApp' do
pod 'SSZipArchive'
end
Defining a test target accessing SSZipArchive pod from its parent
target 'ZipApp' do
pod 'SSZipArchive'
target 'ZipAppTests' do
inherit! :search_paths
pod 'Nimble'
end
end
Defining a target applies Pods to multiple targets via its parent target
target 'ShowsApp' do
pod 'ShowsKit'
# Has its own copy of ShowsKit + ShowTVAuth
target 'ShowsTV' do
pod 'ShowTVAuth'
end
# Has its own copy of Specta + Expecta
# and has access to ShowsKit via the app
# that the test target is bundled into
target 'ShowsTests' do
inherit! :search_paths
pod 'Specta'
pod 'Expecta'
end
end
inherit!
設(shè)置當(dāng)前目標(biāo)的繼承模式钾腺。
有效的模式:
:complete
繼承父target
所有行為:none
不繼續(xù)父target
的行為:search_paths
僅繼承父target
的搜索路徑
示例:
target 'App' do
target 'AppTests' do
inherit! :search_paths
end
end
Target configuration
platform
指定應(yīng)為其構(gòu)建靜態(tài)庫的平臺,示例:
platform :ios, '4.0'
platform :ios
project
Specifies the Xcode project that contains the target that the Pods library should be linked with.
示例:
# This Target can be found in a Xcode project called `FastGPS`
target 'MyGPSApp' do
project 'FastGPS'
...
end
# Same Podfile, multiple Xcodeprojects
target 'MyNotesApp' do
project 'FastNotes'
...
end
project 'TestProject', 'Mac App Store' => :release, 'Test' => :debug
inhibit_all_warnings!
屏蔽來自 CocoaPods
庫的所有警告讥裤。
您可以使用以下內(nèi)容排除特定Pod被屏蔽:
pod 'SSZipArchive', :inhibit_warnings => false
use_frameworks!
Use frameworks instead of static libraries for Pods.
Workspace
This group list the options to configure workspace and to set global settings.
workspace
Specifies the Xcode workspace that should contain all the projects.
示例:
workspace 'MyWorkspace'