异常"缺少具有主调度程序的模块",仅在发布 APK 中



我在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工件中存在一些临时问题。

我该怎么办?

如果您正在使用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>;
}

将此行添加到您的进度文件中

-保持类kotlinx.coroutines.android.*{*;}

最新更新