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'
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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