Expo托管项目构建失败:JVM Target版本不兼容问题求助
解决Expo托管工作流中JVM Target冲突及依赖版本不匹配问题
一、统一JVM Target版本为11
问题根源是react-native-fusioncharts采用JVM Target 11编译字节码,而你的项目默认使用1.8,导致字节码内联冲突。通过Expo官方插件统一配置:
- 安装配置插件:
npx expo install expo-build-properties - 修改
app.json或app.config.js,添加插件配置,强制Android项目使用JVM Target 11:{ "expo": { "plugins": [ [ "expo-build-properties", { "android": { "jvmTarget": "11", // 可选:补充兼容编译版本,规避其他潜在冲突 "compileSdkVersion": 33, "targetSdkVersion": 33, "kotlinVersion": "1.7.20" } } ] ] } }
二、修复Expo依赖版本不匹配
expo-cli doctor检测到的版本差异会导致构建或运行异常,按以下步骤修复:
- 优先使用Expo自带命令自动同步依赖:
该命令会自动将所有Expo相关依赖更新至当前SDK对应的兼容版本,涵盖npx expo updateexpo-modules-autolinking和@expo/config-plugins。 - 若自动更新无效,手动修改
package.json:- 将
expo-modules-autolinking版本设为~0.10.1,@expo/config-plugins设为^5.0.0 - 执行
npm install或yarn install重新安装依赖
- 将
- 再次运行
npx expo-cli doctor确认所有依赖版本符合要求
三、重新集成react-native-fusioncharts并验证
解决上述问题后,重新集成图表库并测试:
- 安装依赖:
npm install react-native-fusioncharts --save # 或 yarn add react-native-fusioncharts - 清理构建缓存并重新构建:
npx expo build:android -c - 本地调试时,清理Expo缓存后启动:
npx expo start -c
额外提示
- 确保你的Expo SDK版本在45及以上(JVM Target 11需要SDK 45+支持),若使用旧版本,先通过
npx expo update升级至最新稳定版。 - 若手机端仍无法运行,检查是否开启Expo Go调试模式,或尝试卸载手机端旧应用后重新安装。
内容的提问来源于stack exchange,提问作者Netanel Klein
相关产品推荐
相关产品推荐

