执行npm run android失败,报错Could not determine java version from ‘10’
解决
npm run android报错:Could not determine java version from ‘10’ 我来帮你搞定这个问题,这个报错我之前处理过好几次,核心原因其实很清晰:你用的Gradle 4.6不支持Java 10。Gradle 4.6的官方兼容范围是Java 5到Java 9,当它遇到Java 10的版本号格式时,就会无法识别,抛出这个错误。
结合你的环境(没装Android Studio但配置了Gradle、Java和Genymotion),给你两个可行的解决方案,你可以根据自己的情况选择:
方案一:降级Java版本到Java 9或更低(推荐)
因为你的Gradle版本固定是4.6,降级Java是最稳妥的方式,而且Java 8是长期支持的稳定版本,适配绝大多数旧版Android构建场景:
- 卸载当前的Java 10,安装Java 8或者Java 9(优先选Java 8)
- 重新配置
JAVA_HOME环境变量,指向新安装的Java根目录 - 验证配置是否生效:打开终端输入
java -version,确认显示的是你安装的新版本;再输入echo $JAVA_HOME(Linux/Mac)或者echo %JAVA_HOME%(Windows),确认路径和Java安装目录一致 - 做完这些后,重新运行
npm run android应该就能正常构建了
方案二:升级Gradle到支持Java 10的版本
如果你不想降级Java,可以把Gradle升级到4.7及以上版本(Gradle 4.7开始正式支持Java 10),步骤如下:
- 找到你的React Native项目里的
android/build.gradle文件,修改dependencies块中的Gradle插件版本,确保它和升级后的Gradle版本兼容,比如:dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // 这个版本适配Gradle 4.7+ // 其他依赖项保持不变 } - 打开
gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl指向Gradle 4.7的安装包:distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip - 删除项目
android目录下的.gradle文件夹,清理旧的构建缓存 - 最后重新运行
npm run android尝试构建
额外注意点
- 虽然你没装Android Studio,但要确保
ANDROID_HOME环境变量已经正确配置,npm run android需要依赖Android SDK里的构建工具才能完成编译 - Genymotion路径配置没问题的话,只要构建成功,应该会自动连接到你的模拟器
内容的提问来源于stack exchange,提问作者M Maruf




