WorkManager 1.0.0-alpha09を使用しようとしています。このエラーが発生しています:
Program type already present:
com.google.common.util.concurrent.ListenableFuture
Message{kind=ERROR, text=Program type already present:
com.google.common.util.concurrent.ListenableFuture, sources=[Unknown source
file], tool name=Optional.of(D8)}
バージョン1.0.0-alpha08以下を使用している場合。このエラーは発生しませんが、パブリックコンストラクターが必要です
public Worker (Context context, WorkerParameters workerParams)
私の場合、次の構成をアプリのモジュールbuild.gradle
に追加する必要がありました。
configurations {
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
}
いくつかの依存関係がcom.google.guava:guava
とcom.google.guava:listenablefuture
を一緒に使用するために発生します。依存関係の競合が発生します。
https://issuetracker.google.com/issues/116154359 をご覧ください。
回避策は次のとおりです。
implementation("Android.Arch.work:work-runtime:1.0.0-alpha09") {
exclude group: 'com.google.guava', module: 'listenablefuture'
}
アプリのgradleファイルの最後にimplementation 'com.google.guava:guava:27.0.1-Android'
を追加しただけで、エラーはなくなりました。
作業マネージャーからのListenableFuture
を使用しています。
implementation("Android.Arch.work:work-runtime:1.0.0")
exclude group: 'com.google.guava', module: 'listenablefuture'
を除外すると、うまくいきませんでした。
内部でandroidTestImplementation "com.google.truth:truth:42"
を内部的に使用するcom.google.guava:guava:25.0.1-Android
を内部で使用する依存関係を使用していました。これが問題を引き起こしていました。
com.google.truth:truth
を43
にアップグレードすると解決しました。