Flutter构建release版APK报-Xmx4608m堆内存错误如何解决?
解决方案
根因说明
你遇到的两个报错是连锁问题:
- 第一个报错是因为你当前安装的是32位JDK,32位JVM最大支持的堆内存上限仅为1.4G~1.6G,设置4608m超出了最大支持范围,同时系统环境变量中配置的
_JAVA_OPTIONS优先级高于gradle.properties配置,会优先读取该环境变量的堆内存参数。 - 第二个报错是因为你把堆内存调整到512M后,内存不足以支撑Android release包的打包流程,触发堆内存溢出。
具体操作步骤
- 第一步:清理系统环境变量的无效配置
打开Windows系统环境变量设置,检查是否存在名为_JAVA_OPTIONS的变量,若存在直接删除,或者将其值修改为-Xmx2048m,避免覆盖gradle配置。 - 第二步:更换64位JDK
32位JDK已经无法适配现在的Android打包需求,卸载当前32位JDK,下载安装64位的JDK8或JDK11,配置好JAVA_HOME等环境变量后,在cmd中执行java -version,确认输出包含64-Bit标识即为安装成功。 - 第三步:调整gradle.properties配置
将gradle.properties中的org.gradle.jvmargs参数修改为合理值:
如果你电脑运行内存大于8G,也可以将-Xmx调整为4096m提升打包速度。org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m android.enableR8=true android.useAndroidX=true android.enableJetifier=true - 第四步:重新打包验证
先执行flutter clean清理项目缓存,再执行flutter build apk --release进行release包构建即可。
可选优化
如果调整后依然偶发堆内存溢出,可在android/app/build.gradle的defaultConfig节点中添加配置开启多Dex分包:
defaultConfig { // 其他原有配置 multiDexEnabled true }
内容的提问来源于stack exchange,提问作者Alaeddine Bouhajja
相关产品推荐
相关产品推荐

