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

AGP升级后R8混淆打包失败:Attempt to enqueue错误求助

R8打包错误:Attempt to enqueue an action in a non pushable enqueuer work list 解决建议

问题背景

环境信息

  • Android Gradle Plugin版本:7.4.0(7.3.1版本也出现相同问题)
  • R8版本:4.0.48(AGP自带版本)

打包配置

build.gradle.kts中的release构建配置:

getByName("release") {
    isDebuggable = false
    isShrinkResources = true
    isMinifyEnabled = true

    proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}

问题现象

之前可正常生成签名release包,升级AGP、Compose compiler等依赖后,打包失败,核心报错:

> Task :app:minifyReleaseWithR8 AGPBI:
 {"kind":"error","text":"com.android.tools.r8.internal.e50: Attempt to enqueue an action in a non pushable enqueuer work list.","sources":[{}],"tool":"R8"}

> Task :app:minifyReleaseWithR8 FAILED 
com.android.tools.r8.internal.e50: Attempt to enqueue an action in a non pushable enqueuer work list.

已尝试清理构建、重启Android Studio、清除缓存等操作,均无效,无法逐步回滚依赖排查。

完整堆栈信息

> Task :app:minifyReleaseWithR8
AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.e50: Attempt to enqueue an action in a non pushable enqueuer work list.","sources":[{}],"tool":"R8"}

> Task :app:minifyReleaseWithR8 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:minifyReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
   > Compilation failed to complete

* Try:
> Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:minifyReleaseWithR8'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
    ...(省略重复堆栈内容)

解决建议

1. 升级R8版本(优先尝试)

AGP 7.4.0自带的R8 4.0.48存在已知内部逻辑错误,手动指定更高兼容版本可修复:
在项目根目录的build.gradle.kts中添加:

buildscript {
    dependencies {
        classpath("com.android.tools:r8:7.4.6") // AGP 7.4.x推荐搭配R8 7.4.x系列,或更高兼容版本
    }
}

注意:R8版本需与AGP版本匹配,避免兼容性问题。

2. 切换基础ProGuard规则

临时替换优化版规则为基础版,绕过可能的优化冲突:
修改打包配置中的proguard文件路径:

proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")

若打包成功,再逐步复用优化规则,排查触发错误的具体优化项。

3. 补充Compose相关R8规则

升级Compose Compiler后,需确保规则覆盖完整,在proguard-rules.pro中添加:

# Compose核心类保留
-keep class androidx.compose.** { *; }
-keep interface androidx.compose.** { *; }
-dontwarn androidx.compose.**

# Compose Compiler依赖的元数据类
-keep class kotlinx.metadata.** { *; }
-dontwarn kotlinx.metadata.**

# 保留Compose注解相关
-keep @androidx.compose.runtime.Composable class * { *; }
-keep class * implements androidx.compose.runtime.Composable

4. 生成详细日志定位根源

执行打包命令时启用debug日志,查看R8处理到哪个类时触发错误:

./gradlew assembleRelease --debug

从日志中找到错误前的类处理记录,针对性添加-keep规则。

5. 临时禁用资源收缩

关闭资源收缩功能,排查是否与R8优化冲突:

isShrinkResources = false

若打包成功,再单独排查资源文件或资源收缩规则的问题。


内容的提问来源于stack exchange,提问作者tasjapr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:40:33