美文网首页
Cocoapods学习1.0

Cocoapods学习1.0

作者: Kk太阳 | 来源:发表于2017-12-26 13:02 被阅读26次

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'

相关文章

网友评论

      本文标题:Cocoapods学习1.0

      本文链接:https://www.haomeiwen.com/subject/hmtcvttx.html