异常“缺少与主调度程序的模块。”仅在发行版APK

时间:2018-10-26 07:22:08

标签: android kotlin kotlinx.coroutines

我在Android项目中使用Kotlin 1.3 EAP和kotlinx-coroutines-android:1.0.0-RC1。我的开发构建成功,并且该应用程序运行良好。但是,当我Generate Signed APK时,该应用仍会生成并运行,但是随后崩溃

  

java.lang.IllegalStateException:缺少带有Main调度程序的模块。添加提供Main调度程序的依赖项,例如'kotlinx-coroutines-android'

由于开发版本运行良好,显然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构件中存在一些临时问题。

我该怎么做才能做到这一点?

2 个答案:

答案 0 :(得分:8)

如果您使用的是proguard,请添加这些proguard rules

# 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>;
}

Source

答案 1 :(得分:-1)

将此行添加到您的程序文件中

-keep类kotlinx.coroutines.android。* {*;}