java.lang.OutOfMemoryError 使用本机库打包 Android 应用时
java.lang.OutOfMemoryError when packaging an Android App with the native libs
全部:
我有一个启用了 NDK-build 的 Android 应用程序,带有调试符号的本机共享库的大小约为 2G。在我的Gradle脚本中,有一个打包选项,
packagingOptions {
doNotStrip '**/*testcore*.so'
}
如果我注释掉该块,我可以运行 应用程序没有问题。如果我将块留给 run/debug 应用程序,我将在打包任务期间遇到内存不足的问题,如下所示:
Execution failed for task ':app:packageXXXXXXXXDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> java.lang.OutOfMemoryError (no error message)
我试图将文件 gradle.properites
中的内存增加到一个很大的数字,
org.gradle.jvmargs=-Xmx8g
看来帮不上太大忙。我正在使用带有插件 4.0.1 的 Android Studio 4.1.1。
(它之前适用于 Android Studio 4.0.1 和 3.5.0)。
由于我们需要经常调试进入本机代码,因此我们需要在不剥离调试符号的情况下部署本机库。有什么建议或解决方案吗?谢谢!
我建议在打包 APK 时去除符号,然后在调试时,通过将其添加到搜索路径 或更简单地使用 [=10= 让 LLDB 知道未去除的二进制文件的位置]. LLDB 自动将剥离的符号文件映射到源,所以希望这应该有效。
全部:
我有一个启用了 NDK-build 的 Android 应用程序,带有调试符号的本机共享库的大小约为 2G。在我的Gradle脚本中,有一个打包选项,
packagingOptions {
doNotStrip '**/*testcore*.so'
}
如果我注释掉该块,我可以运行 应用程序没有问题。如果我将块留给 run/debug 应用程序,我将在打包任务期间遇到内存不足的问题,如下所示:
Execution failed for task ':app:packageXXXXXXXXDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> java.lang.OutOfMemoryError (no error message)
我试图将文件 gradle.properites
中的内存增加到一个很大的数字,
org.gradle.jvmargs=-Xmx8g
看来帮不上太大忙。我正在使用带有插件 4.0.1 的 Android Studio 4.1.1。 (它之前适用于 Android Studio 4.0.1 和 3.5.0)。
由于我们需要经常调试进入本机代码,因此我们需要在不剥离调试符号的情况下部署本机库。有什么建议或解决方案吗?谢谢!
我建议在打包 APK 时去除符号,然后在调试时,通过将其添加到搜索路径 或更简单地使用 [=10= 让 LLDB 知道未去除的二进制文件的位置]. LLDB 自动将剥离的符号文件映射到源,所以希望这应该有效。