You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中依赖Gem的Gemfile.lock的Bundler版本更新问题求助

解决嵌套Gem依赖的Bundler版本冲突与json安装错误问题

问题核心

你遇到的是嵌套Gem依赖的Bundler版本不兼容,以及旧版本json (1.8.2)在Ruby 3.1.0下无法安装的问题——json 1.8.2不支持Ruby 3.x版本,而旧版cocoapods(0.36.3)依赖的activesupport 4.2.1又绑定了这个旧json版本。

解决方案步骤

1. 禁止手动修改嵌套Gem的Gemfile.lock

嵌套Gem的Gemfile.lock是该Gem发布时锁定的依赖,手动修改极易引发连锁兼容问题,正确的做法是通过隔离或升级依赖来解决。

2. 用Bundler隔离项目依赖环境(推荐)

指定项目级依赖安装路径,避免全局Gem干扰,同时统一项目使用的Bundler版本:

# 卸载全局旧版Bundler(可选)
gem uninstall bundler -v 1.17.3
# 用项目指定的Bundler版本安装本地依赖
bundle _2.4.13_ install --path vendor/bundle

所有依赖会安装到项目本地的vendor/bundle目录,彻底和全局嵌套Gem环境隔离。

3. 升级cocoapods版本(根本解决)

cocoapods 0.36.3是2015年的老旧版本,完全不兼容Ruby 3.x,必须升级到兼容版本:

# 移除旧版cocoapods
gem uninstall cocoapods -v 0.36.3
# 安装支持Ruby 3.x的新版本(推荐1.11+)
gem install cocoapods -v 1.11.3
# 修改项目Gemfile,指定新版本cocoapods
# 打开Gemfile,修改为:gem 'cocoapods', '~> 1.11.3'
# 执行更新
bundle update cocoapods

升级后,activesupport会自动更新到兼容Ruby 3.x的版本,json安装错误也会随之消失。

4. 临时兼容方案(仅应急,不推荐)

如果暂时无法升级cocoapods,可给json 1.8.2打Ruby 3.x兼容补丁:

# 安装补丁工具
gem install specific_install
# 安装带Ruby 3补丁的json 1.8.2
gem specific_install https://github.com/flori/json.git -b v1.8.2-ruby3

此方法仅为临时 workaround,长期来看升级cocoapods才是稳妥方案。

关键提醒

  • React Native iOS端依赖cocoapods,务必保持cocoapods版本与Ruby版本兼容:Ruby 3.x对应cocoapods 1.10+版本。
  • 所有依赖调整都应通过项目自身的Gemfile和bundle命令管理,不要触碰嵌套Gem的配置文件。

内容的提问来源于stack exchange,提问作者Milan Aggarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:55:07