Плагин Kotlin-Reflect и Android Gradle 3.1.0

Я использую в своем проекте библиотеку org.jetbrains.kotlin:kotlin-refle (включена в зависимости gradle).

Приложение работает без каких-либо проблем, однако после обновления плагина Android Gradle до последней версии 3.1.0 приложение стало аварийно завершать работу на одном устройстве (Nexus 5, Android 4.4.3). Логи следующие:

E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: kotlin.jvm.KotlinReflectionNotSupportedError: Реализация отражения Kotlin не найдена во время выполнения. Убедитесь, что у вас есть kotlin-refle.jar в пути к классам на kotlin.jvm.internal.ClassReference.error(ClassReference.kt:86) на kotlin.jvm.internal.ClassReference.getSimpleName(ClassReference.kt:23)

Я предполагаю, что это не ожидаемое поведение, но, возможно, кто-то нашел обходной путь / решение?

На данный момент я был вынужден понизить плагин Android Gradle до 3.0.1, чтобы предотвратить сбой приложения.

====================

Я пытался воссоздать среду, вызывающую сбой, однако мне не удалось воспроизвести сбой. Поскольку это происходит только в старых версиях Android (pre-L) и после обновления плагина Android Gradle, который вводит некоторые оптимизации dex, я думаю, что это как-то связано.

====================

Для тех, кто отмечает эту проблему как дубликат:

Я не уверен, может ли быть более ясным об этом: другой билет о пропавшей зависимости. У меня есть kotlin-отражают зависимость в моем build.gradle. Кроме того, мое приложение работает на более высоких версиях Android, а также после понижения плагина Android Gradle до 3.0.1. С отсутствующей зависимостью это не будет работать с любой версией плагина Android Gradle. Поэтому ответ на другой вопрос не действителен для этого.

1 ответ

Решение

Добавление строки вgradle.properties решает проблему:

android.enableD8MainDexList=false

Кроме того, ошибка, похоже, исчезла в версии плагина 3.2.0-alpha11

Источники:

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