1

我有一个简单Gemfile的使用 cocoapods 的 iOS 项目:

# frozen_string_literal: true
source "https://rubygems.org"

gem 'cocoapods'
gem 'fastlane'
gem 'jazzy'

我尝试将我的捆绑包更新为 abundle update并且 jazzy 从版本 0.8.2 到 0.0.14 所以我回滚了我的Gemfile.lock并且对我的 3 个 gem 进行了 3 次单独更新,一切都很顺利即 jazzy 仍然在版本 0.8.2 .

我重做了一个bundle update,jazzy 再次从 0.8.2 版本升级到 0.0.14。

我在这里想念什么?为什么我会得到一组具有相同约束的不同版本?

有关文件内容的更多详细信息的要点:https ://gist.github.com/dirtyhenry/135ec7ef73f873d5ac3236bc3da633ba

4

1 回答 1

2

问题是依赖地狱。

Fastlane 依赖于xcpretty,它依赖于rouge主要版本 2 (~>2.0.7),而 jazzy 本身依赖于不同版本的rouge,主要版本 1 (~> 1.5),因此,bundler 尝试解析 jazzy 的最高版本以重用现有的胭脂依赖(即 0.0.14)。

但是,您可以强制 bundler 使用 0.8.2 版,更时髦,添加到您的Gemfile

gem 'jazzy', '>=0.8.2'

代替

gem 'jazzy'

并再次表演bundle update

在bundler 文档中查看有关版本控制的更多详细信息

于 2017-06-26T10:42:19.330 回答