【问题标题】:java.lang.OutOfMemoryError when packaging an Android App with the native libsjava.lang.OutOfMemoryError 使用本机库打包 Android 应用程序时
【发布时间】:2020-12-19 00:12:50
【问题描述】:

全部:

我有一个启用了 NDK-build 的 Android 应用程序,带有调试符号的本机共享库的大小约为 2G。在我的 Gradle 脚本中,有一个打包选项,

  packagingOptions {
    doNotStrip '**/*testcore*.so'
  }

如果我注释掉了该块,我可以毫无问题地运行该应用程序。如果我离开块来运行/调试应用程序,我会在打包任务期间遇到内存不足的问题,如下所示:

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)。

由于我们需要经常调试步入原生代码,我们需要在不剥离调试符号的情况下部署原生库。有什么建议或解决方案吗?谢谢!

【问题讨论】:

    标签: android android-ndk android-build


    【解决方案1】:

    我建议在打包 APK 时剥离符号,然后在调试时,通过将未剥离的二进制文件添加到搜索路径 https://stackoverflow.com/a/38426653/5954246 或更简单地使用 target symbols add <file>.so 来让 LLDB 知道未剥离的二进制文件的位置。 LLDB 自动将剥离的符号文件映射到源,所以希望这应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-23
      • 2018-12-08
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2014-04-05
      • 2014-08-20
      相关资源
      最近更新 更多