Cocoapods学习1.0

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和将总是匹配最新已知版本符合要求。
    版本要求列表可以用于更细粒度的控制规定。

  • 语义版本

  • RubyGems的版本管理策略

构建配置(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'
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 20,533评论 0 39
  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,765评论 0 1
  • 一. CocoaPods的介绍 什么是CocoaPods?CocoaPods是一个负责管理iOS项目中第三方开源库...
    辉712阅读 3,874评论 0 7
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,480评论 3 51
  • 很早就知道这本书,一直也没有读,对于里面到底是一个什么样的世界并不知晓。on the road 也被到处使用,帆布...
    Phoebe666阅读 357评论 0 2