如何解决Android构建过程中出现的OutOfMemoryError错误
Android编译Java堆内存溢出问题解决方案
- 调整Gradle全局JVM堆内存配置
你配置的dexOptions.javaMaxHeapSize仅针对d8/R8编译的独立进程分配内存,Gradle本身的构建进程堆内存不足也会抛出OOM异常。在项目根目录的gradle.properties文件中添加/修改以下配置:
org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
内存分配按照本地设备总内存调整:16G内存建议分配8G,32G内存可分配16G,需预留至少4G内存给操作系统和其他进程使用。
- 适配高版本Android Gradle Plugin(AGP)配置
AGP 7.0及以上版本已废弃dexOptions.javaMaxHeapSize配置,原有配置不会生效,需在gradle.properties中添加R8专用堆配置:
android.r8.javaMaxHeapSize=4g
- 优化编译配置降低内存消耗
- 开发调试阶段关闭不必要的编译优化:debug构建类型下关闭minify、shrinkResources配置,仅在release打包时开启
- 清理项目冗余依赖:执行
./gradlew dependencies排查未使用的第三方依赖、重复依赖,移除后可大幅降低编译时内存占用 - 开启增量编译:在
gradle.properties中添加org.gradle.caching=true开启构建缓存,减少重复编译任务的资源消耗
- 检查运行环境兼容性
- 必须使用64位版本的JDK,32位JDK最大堆内存上限为4G,无法分配更高内存
- 编译前关闭其他占用内存较高的进程(如模拟器、IDE多余窗口),避免可用内存不足
- 临时故障排查
先执行清理缓存命令再重新编译,避免缓存损坏导致的内存异常:
./gradlew clean
内容的提问来源于stack exchange,提问作者Takeshi567
相关产品推荐
相关产品推荐

