使用gradlew构建Android应用失败问题求助
核心问题
构建失败的直接原因是Android Gradle Plugin (AGP) 8.0.2 要求构建环境必须使用 Java 11 及以上版本,但你当前系统配置的 JDK 是 Java 8,二者版本不兼容。
Android Studio 能正常构建是因为它默认使用了内置的 Java 11+ JDK,而命令行(CLI)调用的是你系统安装的 Java 8,这就是两种环境结果不同的原因。
修复步骤
1. 安装 Java 11 JDK
推荐安装与你之前同系列的 Zulu 11(适配 macOS aarch64 架构),保证版本兼容性。
2. 配置 Gradle 使用 Java 11
有三种方式可以让 Gradle 切换到 Java 11 环境:
方式一:修改项目 gradle.properties 文件
在项目根目录的 gradle.properties 中添加以下配置:
org.gradle.java.home=/path/to/your/zulu-11-jdk org.gradle.jvmargs=-Xmx2048m
将 /path/to/your/zulu-11-jdk 替换为实际的 Java 11 安装路径,示例路径类似:/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
方式二:设置系统环境变量 JAVA_HOME
终端临时生效(仅当前会话):
export JAVA_HOME=/path/to/your/zulu-11-jdk
如需永久生效,编辑你的 Shell 配置文件(如 ~/.zshrc 或 ~/.bash_profile),添加上述命令后执行 source ~/.zshrc 刷新配置。
方式三:使用 Android Studio 内置 JDK
Android Studio 自带的 JDK 路径通常为:
/Applications/Android Studio.app/Contents/jbr/Contents/Home
直接将该路径配置到 gradle.properties 或 JAVA_HOME 即可。
3. 验证配置并重新构建
执行以下命令确认 Java 版本切换成功:
java -version
输出显示 Java 11 版本后,重新运行构建命令:
./gradlew bundleRelease
(若需构建 APK,替换为 ./gradlew assembleRelease)
额外说明
- AGP、Gradle、Java 版本存在严格的兼容性对应关系,需确保三者版本匹配。
- 配置自定义签名时,需在
app/build.gradle中正确编写signingConfigs和buildTypes节点,示例:
android { signingConfigs { release { storeFile file("your-keystore.jks") storePassword "your-store-password" keyAlias "your-key-alias" keyPassword "your-key-password" } } buildTypes { release { signingConfig signingConfigs.release // 其他构建配置 } } }
内容的提问来源于stack exchange,提问作者fhcat

