Podfile語法參考(譯)

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'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末放棒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子己英,更是在濱河造成了極大的恐慌间螟,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件损肛,死亡現(xiàn)場離奇詭異厢破,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)治拿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門摩泪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劫谅,你說我怎么就攤上這事见坑∪侣樱” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵荞驴,是天一觀的道長不皆。 經(jīng)常有香客問我,道長熊楼,這世上最難降的妖魔是什么霹娄? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮孙蒙,結(jié)果婚禮上项棠,老公的妹妹穿的比我還像新娘。我一直安慰自己挎峦,他們只是感情好香追,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坦胶,像睡著了一般透典。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顿苇,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天峭咒,我揣著相機(jī)與錄音,去河邊找鬼纪岁。 笑死凑队,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幔翰。 我是一名探鬼主播漩氨,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼遗增!你這毒婦竟也來了叫惊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤做修,失蹤者是張志新(化名)和其女友劉穎霍狰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饰及,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蔗坯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了燎含。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片步悠。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘫镇,靈堂內(nèi)的尸體忽然破棺而出鼎兽,到底是詐尸還是另有隱情,我是刑警寧澤铣除,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布谚咬,位于F島的核電站,受9級特大地震影響尚粘,放射性物質(zhì)發(fā)生泄漏择卦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一郎嫁、第九天 我趴在偏房一處隱蔽的房頂上張望秉继。 院中可真熱鬧,春花似錦泽铛、人聲如沸尚辑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杠茬。三九已至,卻和暖如春弛随,著一層夾襖步出監(jiān)牢的瞬間瓢喉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工舀透, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留栓票,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓愕够,卻偏偏與公主長得像走贪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子链烈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 本文翻譯自官方的Podfile Syntax Reference,也參考了之前一位博主的翻譯厉斟,若翻譯中有什么異議,...
    Tasselx閱讀 69,502評論 10 194
  • 項目組件化强衡、平臺化是技術(shù)公司的共同目標(biāo)擦秽,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構(gòu)...
    swu_luo閱讀 21,634評論 0 39
  • 經(jīng)常使用CocoaPods來管理iOS項目中的第三方庫漩勤,但是我們要使用CocoaPods來管理第三方庫感挥,前提是要寫...
    qitianjin閱讀 1,347評論 2 0
  • 轉(zhuǎn)載自:http://blog.csdn.net/qitianjin/article/details/517738...
    YYT1992閱讀 2,631評論 0 0
  • Ruby 安裝 要安裝cocospods 首先需要安裝ruby,可以先安裝xcode越败,再安裝macport 触幼,最后...
    山天大畜閱讀 1,848評論 0 1