Windows WSL环境本地构建Expo项目遇Gradle-Java版本兼容错误求助
Expo托管项目WSL本地Android构建失败解决方案
问题背景
我在Windows机器上运行Linux WSL服务器,项目为Expo托管项目,希望本地构建不依赖EAS服务器。在项目目录打开Linux Shell执行命令:
eas build --platform android --profile production --local
但构建失败,错误信息如下:
FAILURE: 构建失败,出现异常。 [RUN_GRADLEW] * 出错原因: [RUN_GRADLEW] 配置根项目'myProjectName'时出现问题。 [RUN_GRADLEW] > 无法确定null的依赖项。 [RUN_GRADLEW] > 无法解析配置':classpath'的所有任务依赖项。 [RUN_GRADLEW] > 无法解析com.android.tools.build:gradle:7.4.1。 [RUN_GRADLEW] 被以下项目依赖: [RUN_GRADLEW] project : [RUN_GRADLEW] > 未找到com.android.tools.build:gradle:7.4.1的匹配变体。消费者配置为寻找 [RUN_GRADLEW] 兼容Java 8的库运行时,打包为jar,依赖项外部声明,以及属性'org.gradle.plugin.api-version'值为'7.5.1',但: [RUN_GRADLEW] - 变体'apiElements'的能力com.android.tools.build:gradle:7.4.1声明 [RUN_GRADLEW] 一个库,打包为jar,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明了兼容Java 11的API组件,而消费者需要 [RUN_GRADLEW] 兼容Java 8的运行时组件 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及 [RUN_GRADLEW] org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'javadocElements'的能力com.android.tools.build:gradle:7.4.1声明 [RUN_GRADLEW] 组件的运行时,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明为文档,而消费者需要库 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及目标Java版本(要求兼容Java 8) [RUN_GRADLEW] - 未提及元素打包方式(要求打包为jar) [RUN_GRADLEW] - 未提及 [RUN_GRADLEW] org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'runtimeElements'的能力com.android.tools.build:gradle:7.4.1声明库的运行时,打包为jar,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明兼容Java 11,而消费者需要兼容Java 8的组件 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'sourcesElements'的能力com.android.tools.build:gradle:7.4.1声明组件的运行时,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明为文档,而消费者需要库 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及目标Java版本(要求兼容Java 8) [RUN_GRADLEW] - 未提及元素打包方式(要求打包为jar) [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] > 无法解析com.android.tools.build:gradle:7.3.1。 [RUN_GRADLEW] 被以下项目依赖: [RUN_GRADLEW] project : > project :react-native-gradle-plugin [RUN_GRADLEW] > 未找到com.android.tools.build:gradle:7.4.1的匹配变体。消费者配置为寻找兼容Java 8的库运行时,打包为jar,依赖项外部声明,以及属性'org.gradle.plugin.api-version'值为'7.5.1',但: [RUN_GRADLEW] - 变体'apiElements'的能力com.android.tools.build:gradle:7.4.1声明库,打包为jar,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明了兼容Java 11的API组件,而消费者需要兼容Java 8的运行时组件 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'javadocElements'的能力com.android.tools.build:gradle:7.4.1声明组件的运行时,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明为文档,而消费者需要库 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及目标Java版本(要求兼容Java 8) [RUN_GRADLEW] - 未提及元素打包方式(要求打包为jar) [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'runtimeElements'的能力com.android.tools.build:gradle:7.4.1声明库的运行时,打包为jar,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明兼容Java 11 [RUN_GRADLEW] 而消费者需要兼容Java 8的组件 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1') [RUN_GRADLEW] - 变体'sourcesElements'的能力com.android.tools.build:gradle:7.4.1声明组件的运行时,依赖项外部声明: [RUN_GRADLEW] - 不兼容,因为该组件声明为文档,而消费者需要库 [RUN_GRADLEW] - 其他兼容属性: [RUN_GRADLEW] - 未提及目标Java版本(要求兼容Java 8) [RUN_GRADLEW] - 未提及元素打包方式(要求打包为jar) [RUN_GRADLEW] - 未提及org.gradle.plugin.api-version (要求值为'7.5.1')
当前环境信息
Java版本
openjdk 版本 "17.0.8.1" 2023-08-24 OpenJDK 运行环境 (build 17.0.8.1+1-Ubuntu-0ubuntu122.04) OpenJDK 64位服务器VM (build 17.0.8.1+1-Ubuntu-0ubuntu122.04, 混合模式, 共享)
Gradle版本
gradle -version = ------------------------------------------------------------ Gradle 7.4.1 ------------------------------------------------------------ 构建时间: 2022-03-09 15:04:47 UTC 修订版本: 36dc52588e09b4b72f2010bc07599e0ee0434e2e Kotlin: 1.5.31 Groovy: 3.0.9 Ant: Apache Ant(TM) 版本 1.10.11 编译于 2021年7月10日 JVM: 1.8.0_382 (Private Build 25.382-b05) 操作系统: Linux 5.10.16.3-microsoft-standard-WSL2 amd64
解决步骤
1. 统一Java版本适配
错误核心是Android Gradle插件7.4.1需要Java 11运行环境,但当前Gradle实际使用的是Java 8(看Gradle版本输出的JVM信息),系统全局Java是17,需要让Gradle使用兼容的Java版本:
- 在WSL中安装OpenJDK 11:
sudo apt update && sudo apt install openjdk-11-jdk - 配置Gradle使用Java 11:
在项目根目录创建或修改gradle.properties文件,添加以下内容(路径根据实际安装位置调整,可通过update-alternatives --list java查看):org.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64
2. 对齐Gradle版本与插件版本
错误提示消费者需要org.gradle.plugin.api-version为7.5.1,但当前Gradle是7.4.1,Android Gradle插件7.4.1对应的Gradle版本应为7.5,需升级Gradle:
- 安装Gradle 7.5:
sudo apt install gradle-7.5 - 切换默认Gradle版本:
执行后选择7.5版本即可。sudo update-alternatives --install /usr/bin/gradle gradle /usr/lib/gradle/7.5/bin/gradle 1 sudo update-alternatives --config gradle
3. 清理缓存重新构建
清理旧缓存避免干扰,然后重新执行构建命令:
./gradlew clean rm -rf ~/.gradle/caches eas build --platform android --profile production --local
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

