【解決】com.google.common.util.concurrent.ListenableFutureのクラス・ファイルが見つかりません - 365連休

365連休

にわかのandroidとかの開発メモ。

【解決】com.google.common.util.concurrent.ListenableFutureのクラス・ファイルが見つかりません

Cannot resolve ListenableFuture

 

gradleの依存関係を最新に更新していったら、WorkerManagerのListenableFutureが見つからずビルドエラーが出るようになった。

 

 

public class MyUpdateWorker extends Worker {
       ^
  com.google.common.util.concurrent.ListenableFutureのクラス・ファイルが見つかりません
エラー1個

 

 

他人の書いたライブラリで参照エラーって言われても困る。

 

ググってみると、ライブラリ間でListenableFutureをdependenciesだったりimplementationしてるせいで行方不明になることがあるらしい。

 

対処法は、ListenableFutureを明示的にimplementationすることで、参照できるようにする。

 

github.com

 

 

    //region WorkerManager ジョブ管理
    def work_version = "2.10.0"

    //Workerに関連した「com.google.common.util.concurrent.ListenableFutureのクラス・ファイルが見つかりません」対策
    //ExoPlayerに関連した同様の事例 https://github.com/google/ExoPlayer/issues/7993
    //Workerがcom.google.guava » listenablefutureをDependencies https://mvnrepository.com/artifact/androidx.work/work-runtime/2.10.0
    implementation 'com.google.guava:guava:31.1-android'

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"
    // Kotlin + coroutines
    //implementation "androidx.work:work-runtime-ktx:$work_version"
    // optional - RxJava2 support
    //implementation "androidx.work:work-rxjava2:$work_version"
    // optional - GCMNetworkManager support
    //implementation "androidx.work:work-gcm:$work_version"
    // optional - Test helpers
    //androidTestImplementation "androidx.work:work-testing:$work_version"
    // optional - Multiprocess support
    //implementation "androidx.work:work-multiprocess:$work_version"
    //endregion

 

 

以上。