web-dev-qa-db-ja.com

例外「メインディスパッチャを備えたモジュールがありません。」リリースAPKのみ

AndroidプロジェクトでKotlin1.3EAPとkotlinx-coroutines-Android:1.0.0-RC1を使用しています。開発ビルドは成功し、アプリは正常に実行されます。ただし、Generate Signed APKを実行しても、アプリは引き続き正常に動作します。ビルドして実行しますが、でクラッシュします

Java.lang.IllegalStateExceptionMainディスパッチャーを含むモジュールがありません。 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アーティファクトに暫定的な問題があると思われます。

この作品を作るために何を試みることができますか?

8
Marko Topolnik

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

ソース

9