Skip to content
Go back

JVM Metaspace 内存不足导致的构建失败

Published:  at  10:22 PM

你遇到的错误:

> Task :app:minifyReleaseWithR8 FAILED  
ERROR: R8: java.lang.OutOfMemoryError: Metaspace

以及多个模块(如 react-native-permissions, react-native-pager-view)出现的:

> A failure occurred while executing com.android.build.gradle.internal.lint.AndroidLintWorkAction        
   > Metaspace

✅ 问题分析:

这是典型的 JVM Metaspace 内存不足导致的构建失败,出现在:


🔧 解决方法:

✅ 方法一:增加 JVM 的 Metaspace 大小(推荐)

编辑 android/gradle.properties 文件,添加或修改:

org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1024m

解释:


✅ 方法二:禁用 Lint Vital 分析(可选)

如果你只是想构建 Release 包而不需要发布到 Google Play,可以在 android/app/build.gradle 中禁用 Lint Vital:

android {
  lintOptions {
    checkReleaseBuilds false
    abortOnError false
  }
}

或者在 build.gradle 中针对 lintVitalAnalyzeRelease 任务跳过(仅限调试用途):

./gradlew assembleRelease -x lintVitalAnalyzeRelease

✅ 方法三:关闭 R8(不推荐,除非你明确知道你不需要混淆)

gradle.properties 中添加:

android.enableR8=false

⚠️ 注意:R8 是默认推荐的代码压缩混淆工具,禁用它会使你丢失优化和混淆,尽量避免禁用。


✅ 方法四:升级 Gradle 或 R8 版本(如果你内存够但还是失败)

某些 R8 版本有 内存泄漏或 bug,可以尝试升级:

classpath("com.android.tools.build:gradle:8.1.1")
dependencies {
  // 可选:强制使用最新版本的 R8(一般不建议手动指定,Gradle/AGP 会管理)
}

📌 总结优先建议操作顺序:

  1. 修改 gradle.properties 增加 Metaspace:
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1024m # 这一步解决了问题!!!
  1. 如果还不行,再考虑关闭 lint 检查或调低 R8 优化级别。

Suggest Changes

Next Post
GitHub提交代码无contributions记录解决办法