Исключение «Модуль с Главным диспетчером отсутствует». только в выпуске APK - PullRequest
0 голосов
/ 26 октября 2018

Я использую Kotlin 1.3 EAP и kotlinx-coroutines-android:1.0.0-RC1 в своем проекте Android.Моя разработка успешно завершена, и приложение работает нормально.Однако, когда я Generate Signed APK, приложение все еще собирается и запускается, но затем падает с

java.lang.IllegalStateException: модуль с диспетчером Main отсутствует.Добавьте зависимость, предоставив диспетчер Main, например, 'kotlinx-coroutines-android'

Поскольку сборка dev работает нормально, очевидно, что в файлах gradle нет пропусков.У меня есть эти настройки:

Проект build.gradle:

buildscript {
    ext.kotlin_version = '1.3.0-rc-190'
    ....

Модуль build.gradle:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0-RC1'

Одно и то же приложение работало со многими различнымиверсии экспериментальных сопрограмм с течением времени, это первый раз, когда я столкнулся с этой проблемой.Я подозреваю некоторую временную проблему в артефактах EAP.

Что я могу попытаться сделать, чтобы это работало?

1 Ответ

0 голосов
/ 26 октября 2018

Если вы используете proguard, добавьте эти правила proguard .

# ServiceLoader support
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}

# Most of volatile fields are updated with AFU and should not be mangled
-keepclassmembernames class kotlinx.** {
    volatile <fields>;
}

Источник

...