[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是多个宝石,您可能必须包含其他依赖项,如上所述。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)