Solar2D安卓插件添加YooKassa依赖触发Java堆内存溢出错误求助
问题解决:Solar2D安卓插件添加YooKassa SDK时OOM错误及hprof文件说明
1. java_pidxxx.hprof文件是什么?
这是Java堆转储快照文件,当JVM触发OutOfMemoryError时自动生成,用来记录OOM瞬间的内存占用详情——比如哪些对象占用了大量堆空间、是否存在内存泄漏等。你可以用Android Studio的Profiler工具导入分析,不过当前问题核心是堆内存不足,暂时不需要的话可以直接删除这个大文件。
2. 解决D8编译时的Java堆空间不足问题
Solar2D的安卓插件构建环境默认堆内存配置比普通安卓项目更保守,加上YooKassa SDK依赖较多,导致D8编译dex文件时内存不够。按以下步骤调整:
方法一:调整插件模块的dex编译配置
在你的插件模块build.gradle中添加/修改以下配置:
android { // 其他配置... dexOptions { javaMaxHeapSize "4g" // 把堆内存调到4G,可根据实际情况调整到3G或5G } // 如果你的AGP版本是7.0+,也可以直接针对D8任务配置: tasks.withType(com.android.build.gradle.tasks.D8) { javaMaxHeapSize = "4g" } }
方法二:全局调整Gradle JVM参数
在项目根目录的gradle.properties文件中添加:
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m
这个配置会提升Gradle构建进程的整体堆内存上限。
方法三:清理构建缓存
执行以下命令清理旧的构建文件,避免缓存干扰:
./gradlew clean
之后重新执行构建。
3. 为什么纯净安卓项目没问题?
普通安卓项目的默认Gradle/AGP配置通常已经设置了较高的堆内存上限,而Solar2D的插件模板可能沿用了更轻量化的默认配置,不足以支撑YooKassa SDK这类依赖较多的库的编译需求。
内容的提问来源于stack exchange,提问作者Daniil Andashev
相关产品推荐
相关产品推荐

