构建AAB时内存不足,调大JVM参数至16G仍未解决
构建AAB时出现内存错误(APK构建正常)
问题现象
能正常构建Release APK,但构建AAB时持续触发内存错误,错误发生在shrinkBundleReleaseResources任务阶段。
核心错误信息
- What went wrong:
Out of memory. input is too large to fit in a byte arrayPossible solution:
- Check the JVM memory arguments defined for the gradle process in:
gradle.properties in project root directory
gradle.properties in GRADLE_USER_HOME directory
任务执行失败日志:
Execution failed for task ':app:shrinkBundleReleaseResources'. > A failure occurred while executing com.android.build.gradle.internal.transforms.ShrinkAppBundleResourcesAction > input is too large to fit in a byte array
堆栈跟踪:
Caused by: java.lang.OutOfMemoryError: input is too large to fit in a byte array at com.google.common.io.ByteStreams.toByteArrayInternal(ByteStreams.java:205) at com.google.common.io.ByteStreams.toByteArray(ByteStreams.java:238) Suppressed: java.util.zip.ZipException: invalid entry size (expected 2291636892 but got 0 bytes) at java.base/java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:300) at java.base/java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:374)
已尝试的配置
已调整gradle.properties中的JVM参数至16GB,配置如下:
org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx16g -Xms8g -XX:+UseG1GC -XX:MaxMetaspaceSize=16g
但问题仍未解决。
可能的解决方法
1. 排查异常资源文件
堆栈中出现ZipException: invalid entry size,大概率是存在损坏或异常的资源文件:
- 检查
res/目录下的所有资源(图片、动画、raw文件等),确认是否有0字节文件、体积异常大的文件 - 删除项目根目录下的
build/文件夹,清理临时构建文件后重新尝试构建
2. 为资源压缩任务单独分配内存
全局JVM参数可能未覆盖到资源压缩子任务,在app/build.gradle中为该任务单独配置内存:
tasks.withType(com.android.build.gradle.internal.transforms.ShrinkAppBundleResourcesAction) { jvmArgs '-Xmx16g', '-Xms8g' }
或者为所有Android构建任务统一增加内存:
android { tasks.withType(JavaExec) { jvmArgs '-Xmx16g', '-Xms8g' } }
3. 临时禁用资源压缩(排查用)
关闭资源压缩功能,验证是否能正常构建AAB,以此确认问题根源:
在app/build.gradle的release构建变体中添加:
android { buildTypes { release { shrinkResources false minifyEnabled false // 若不需要混淆可临时关闭 } } }
如果能正常构建,说明资源压缩流程中存在异常资源,再针对性排查。
4. 更新Android Gradle插件和Gradle版本
旧版本AGP可能存在资源压缩的内存处理bug,尝试更新到最新稳定版:
- 在
project/build.gradle中更新AGP版本(示例为8.2.0稳定版):
buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.2.0' } }
- 同步后按Android Studio提示更新Gradle wrapper至兼容版本
5. 检查磁盘状态
磁盘空间不足或文件系统错误可能导致临时构建文件损坏:
- 确认项目所在磁盘有足够剩余空间
- 排查磁盘是否存在坏道或文件系统异常
内容的提问来源于stack exchange,提问作者DroidPest
相关产品推荐
相关产品推荐

