[CocoaPods]使用Gemfile

RubyGems + Bundler

对于许多人来说,CocoaPods是编程项目中依赖管理的第一个介绍。CocoaPods的很多想法来自类似的项目(例如RubyGems,Bundler,npm和Gradle)。

了解Ruby依赖关系管理非常有用,因为它允许您指定CocoaPods或其他gem的版本,并确保团队中的所有开发人员具有完全相同的版本。本指南适用于希望确保团队依赖性一致性或使用未发布版本的CocoaPods的人员。

RubyGems

RubyGems是托管的ruby库服务。它集中在您寻找库的位置,以及安装ruby库/应用程序。你会看到的gem install xxx。这些安装在中央数据库中。如果您想象CocoaPods将所有库/框架安装到System文件夹中并且它们在运行时链接,那么您就可以大致了解RubyGems如何保留所有gem。

这样做的缺点是无法确保需要特定版本库的项目可以使用它,它总是使用最新版本。因此,作为开发人员,您将谨慎安装新版本的库,因为它将在每个库/应用程序中使用。这是捆绑器解决的问题。

Bundler

Bundler允许您指定库的版本,从而为您的应用程序创建一致的应用程序环境。我们把这个想法几乎全部用于CocoaPods。您可以定义一个Gemfile来说明要包含的库,并可以选择指定版本或范围。你运行bundle install它将生成一个Gemfile.lock,说明所有库的确切版本,然后运行bundle install该项目的任何其他人获得完全相同的版本。

什么是Gemfile?

如果您已阅读Podfile上的指南,则会感觉非常相似。Gemfile是一个ruby文件,用于定义ruby依赖项。这是Cocoa项目中现有的一个。

1 source 'https://rubygems.org'
2 
3 gem 'cocoapods'
4 gem 'cocoapods-keys'
5 
6 gem 'fui', '~> 0.3.0'
7 gem 'xcpretty'
8 gem 'second_curtain', '~> 0.2.3'
9 gem 'fastlane'

所有Gemfiles必须包含其Gems的源,除了您使用或多或少相同的语法。这会生成一个Gemfile.lock,在这种情况下将CocoaPods锁定为版本 0.36.3。

将CocoaPods与Gemfile一起使用

使用Gemfile设置,您可以在Gemfile的约束中运行bundle install安装或bundle update更新。但是,从这里开始,您需要记住bundle exec在通过bundler进入的任何终端命令之前运行。鉴于CocoaPods包含在上面,这意味着pod XX YY你需要在任何时候写下你需要做的事情bundle exec pod XX YY

这样做bundle exec可以绕过Gemfile的特定版本,并将在RubyGems中使用最新版本的库。这可能是完全相同的版本,但通常不会。如果您包含CocoaPods插件,那么它们也可能无法运行。

这意味着您可以确保项目的基础工具的版本化就像您的个人库一样。

使用主CocoaPods

通常在中间版本中,您可能有兴趣使用Gemfile来处理未发布的CocoaPods版本。由于项目的规模,当我们确定它不会破坏项目时,我们会尝试缓慢释放。与CocoaPods一样,您可以轻松使用ruby项目的master或fork。以下是使用CocoaPods master 的Gemfile示例。

 1 source 'https://rubygems.org'
 2 
 3 gem 'cocoapods', :git => 'https://github.com/CocoaPods/CocoaPods.git'
 4 gem 'cocoapods-core', :git => 'https://github.com/CocoaPods/Core.git'
 5 gem 'xcodeproj', :git => 'https://github.com/CocoaPods/Xcodeproj.git'
 6 
 7 gem 'cocoapods-keys', :git => 'https://github.com/orta/cocoapods-keys.git'
 8 
 9 gem 'xcpretty'
10 gem 'shenzhen'
11 gem 'sbconstants'

运行bundle install将从master获取版本。由于CocoaPods是多个宝石,您可能必须包含其他依赖项,如上所述。

猜你喜欢

转载自www.cnblogs.com/strengthen/p/10639070.html
今日推荐