Java.lang.OutOfMemoryError при упаковке приложения Android с собственными библиотеками

все:

У меня есть Android-приложение с включенной сборкой NDK, размер собственной общей библиотеки с символами отладки составляет около 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

Вроде не особо помогает. Я использую Android Studio 4.1.1 с плагином 4.0.1. (Раньше он работал с Android Studio 4.0.1 с 3.5.0).

Поскольку нам нужно часто выполнять отладку в нативном коде, нам нужно развернуть нативную библиотеку, не удаляя символы отладки. Любое предложение или решение? Спасибо!

0
0
421
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предложил удалить символы при упаковке APK, а затем во время отладки сообщить LLDB о местонахождении неразрезанных двоичных файлов, добавив его в путь поиска https://stackoverflow.com/a/38426653/5954246 или проще, с помощью target symbols add <file>.so. LLDB автоматически сопоставляет файл разделенных символов с источниками, так что, надеюсь, это должно работать.

Другие вопросы по теме