React Native升级至0.72.3遇Java堆空间错误,求解决方案
针对升级RN从0.64.4到0.72.3时遇到的:invertase_react-native-apple-authentication:generateReleaseRFile任务失败、Java堆空间不足的问题,可按以下步骤尝试解决:
1. 增加Gradle JVM内存分配
在项目根目录的gradle.properties文件中添加或修改以下配置,给Gradle分配更多堆内存:
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError
Jetify处理较大的react-android.aar文件需要足够内存,提升内存配额可直接解决堆溢出问题。
2. 彻底清理缓存与构建产物
执行以下命令清理所有可能的缓存和旧构建文件:
# 清理Android构建产物 cd android && ./gradlew clean # 删除项目根目录的Gradle缓存 rm -rf .gradle # 删除用户目录下的Gradle缓存(Mac/Linux) rm -rf ~/.gradle/caches # 清理Node依赖并重新安装 cd .. && rm -rf node_modules package-lock.json npm install # 清理Gradle构建缓存 cd android && ./gradlew cleanBuildCache
旧缓存可能存在损坏或不兼容的文件,清理后重新构建能避免依赖解析异常。
3. 升级第三方依赖至兼容版本
你使用的@invertase/react-native-apple-authentication需要适配RN 0.72版本,检查该库的最新版本并升级:
npm install @invertase/react-native-apple-authentication@latest
旧版本的第三方库可能依赖过时的RN组件,导致Jetify转换时出现异常。
4. 禁用Jetify(可选)
RN 0.72已全面迁移至AndroidX,多数依赖无需再通过Jetify转换。在gradle.properties中添加:
android.enableJetifier=false
若项目中仍有非AndroidX依赖,可针对性排除:
android.jetifier.blacklist=react-android-*.aar
5. 确保Gradle与AGP版本匹配
RN 0.72要求AGP(Android Gradle Plugin)版本≥7.3.1,Gradle版本≥7.5。修改android/build.gradle中的AGP版本:
buildscript { dependencies { classpath("com.android.tools.build:gradle:7.3.1") // 其他依赖... } }
同时更新gradle/wrapper/gradle-wrapper.properties中的Gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
版本不匹配会导致构建过程中出现各种兼容性问题,包括依赖转换失败。
内容的提问来源于stack exchange,提问作者Eugene Shul

