You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:20:24