Вышел OutOfMemoryError после обновления Android Gradle Plugin до 3.6.1 с 3.5.3 при запуске юнит-теста - PullRequest
0 голосов
/ 14 марта 2020

После обновления для использования Android Gradle Plugin 3.6.1 из 3.5.3 наш модульный тест постоянно получает исключение OutOfMemoryError.

Это журналы cra sh:

 Caused by: com.android.ide.common.workers.WorkerExecutorException: 1 exception was raised by workers:
 java.lang.OutOfMemoryError
 	at com.android.ide.common.workers.ExecutorServiceAdapter.await(ExecutorServiceAdapter.kt:108)
 	at com.android.ide.common.workers.ExecutorServiceAdapter.close(ExecutorServiceAdapter.kt:118)
 	at kotlin.io.CloseableKt.closeFinally(Closeable.kt:53)
 	at com.android.build.gradle.internal.res.GenerateLibraryRFileTask.doFullTaskAction(GenerateLibraryRFileTask.kt:120)
 	at com.android.build.gradle.internal.tasks.IncrementalTask.handleIncrementalInputs(IncrementalTask.kt:107)
 	at com.android.build.gradle.internal.tasks.IncrementalTask.access$handleIncrementalInputs(IncrementalTask.kt:64)
 	at com.android.build.gradle.internal.tasks.IncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:73)

Как мое расследование. AGP 3.6.x изменил способ создания файла R. И крэ sh происходит в этой строке кода: https://android.googlesource.com/platform/tools/base/+/studio-master-dev/build-system/gradle-core/src/main/java/com/android/build/gradle/internal/res/GenerateLibraryRFileTask.kt#120

Пока что я попробовал:

  1. Попробуйте играть с какими-то флагами. Но пока нет удачи.

    • android .enableGradleWorkers = true / false
    • kapt.use.worker.api = true / false
    • kotlin .parallel.tasks.in.project = true / false
    • android .useCompileClasspathLibraryRClasses = false
  2. Поиграйтесь с некоторыми флагами testOptions ( https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html), например forkEvery, maxParallelForks. Но я не уверен, что это поможет, потому что сбой происходит в фразе здания.

    Я пытаюсь получить heapdump, но это довольно сложно, потому что OOM происходит случайно.

    Мои настройки :

    • Версия Gradle: 6.2.2
    • Android Плагин Gradle: 3.6.1
    • Android SDK Build-Tools 28.0.3 И я запускаю модульный тест с помощью инструмента командной строки. Это не должно быть связано с AS.

Буду очень признателен, если кто-нибудь из вас предложит какое-либо решение или направление для расследования

1 Ответ

0 голосов
/ 04 апреля 2020

Только для вашей информации. Я должен решить проблему слишком Google здесь https://issuetracker.google.com/u/1/issues/151460310

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...