Android Studio命令行执行assembleRelease打包APK失败求助
命令行执行Gradle打包失败,但Android Studio界面打包成功
我需要通过命令行生成APK接入Jenkins流水线,在Android Studio界面执行gradle assembleRelease可以成功完成打包,但在终端执行命令./gradlew clean build assembleRelease时提示BUILD FAILED。我已经查阅大量资料并尝试多种方案,包括更新Gradle和JDK版本,但都没解决问题,旧方案也无效。
界面打包成功截图
终端执行错误信息
* 出错原因: 任务 ':mycompany:compileDebugJavaWithJavac' 执行失败。 > 无法解析配置 ':mycompany:androidJdkImage' 的所有文件。 > 无法转换 core-for-system-modules.jar 以匹配属性 {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}。 > JdkImageTransform: /Library/Android/sdk/platforms/android-34/core-for-system-modules.jar 执行失败。 > 执行进程 /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home/bin/jlink 时出错,参数为 {--module-path /.gradle/caches/transforms-3/0d320b4034ab2cb8993658e30dc7e288/transformed/output/temp/jmod --add-modules java.base --output /.gradle/caches/transforms-3/0d320b4034ab2cb8993658e30dc7e288/transformed/output/jdkImage --disable-plugin system-modules} * 尝试方案: > 使用 --stacktrace 参数获取堆栈跟踪。 > 使用 --info 或 --debug 参数获取更多日志输出。 > 使用 --scan 参数获取完整分析信息。 > 访问 https://help.gradle.org 获取更多帮助。 构建中使用了已弃用的Gradle功能,导致无法兼容Gradle 9.0。
本地环境版本信息
Java版本
java -version openjdk version "21.0.1" 2023-10-17 LTS OpenJDK Runtime Environment Temurin-21.0.1+12 (build 21.0.1+12-LTS) OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (build 21.0.1+12-LTS, mixed mode)
Gradle版本
------------------------------------------------------------ Gradle 8.4 ------------------------------------------------------------ Build time: 2023-10-04 20:52:13 UTC Revision: e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f Kotlin: 1.9.10 Groovy: 3.0.17 Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023 JVM: 21.0.1 (Eclipse Adoptium 21.0.1+12-LTS) OS: Mac OS X 13.2.1 x86_64
Android Studio配置截图
项目配置文件
build.gradle(:app)
plugins { id 'com.android.application' id 'kotlin-android' id 'maven-publish' } android { compileSdk 34 defaultConfig { applicationId "com.mycompany" minSdk 21 targetSdk 34 versionCode 1 versionName "2.3.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } namespace 'com.mycompany' viewBinding { enabled = true } buildFeatures { viewBinding true buildConfig = true } }
gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
build.gradle(project)
buildscript { ext { agp_version = '8.1.2' agp_version1 = '8.1.1' agp_version2 = '8.1.2' } repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } dependencies { classpath "com.android.tools.build:gradle:$agp_version2" classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10' // 注意:不要在这里放置应用依赖,它们应该放在各个模块的build.gradle文件中 } }
解决方案
1. 统一JDK版本
终端默认使用JDK 21,但AGP 8.1.x与JDK 21存在兼容性问题,而项目配置的sourceCompatibility为17,Android Studio界面大概率使用JDK 17。解决方式:
- 临时切换终端JDK环境:
export JAVA_HOME=/path/to/your/jdk17 ./gradlew clean assembleRelease - 或者在项目根目录的
gradle.properties中添加配置,强制Gradle使用JDK 17:org.gradle.java.home=/path/to/your/jdk17
2. 简化打包命令
执行clean build assembleRelease会同时构建Debug和Release变体,错误出在Debug任务上。直接只构建Release变体即可:
./gradlew clean assembleRelease
3. 匹配AGP与Gradle版本
当前AGP 8.1.2搭配Gradle 8.4虽属兼容范围,但升级到更匹配的版本组合可避免潜在问题:
- 将AGP升级到8.2.0,对应Gradle 8.5:
- 项目根目录
build.gradle:buildscript { ext { agp_version2 = '8.2.0' } // 其他配置不变 } gradle-wrapper.properties:distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
- 项目根目录
4. 清理Gradle缓存
缓存文件损坏可能导致此类转换错误,执行以下命令清理后重新构建:
./gradlew clean rm -rf ~/.gradle/caches ./gradlew assembleRelease
内容的提问来源于stack exchange,提问作者Alan Bastos
相关产品推荐
相关产品推荐

