Android Studio ListenableFuture消失在哪里?

iqjalb3h  于 2023-10-23  发布在  Android
关注(0)|答案(2)|浏览(158)

我的应用程序突然不再构建了,并出现以下错误:
错误:package com.google.common.util.concurrent不存在
import com.google.common.util.concurrent.ListenableFuture;
为什么突然这么说?很长一段时间以来,这都很好。所有的图书馆都是最新的。我需要做什么才能重新编译它?

**更新:**这是升级后发生的

implementation 'com.google.android.gms:play-services-ads:22.3.0'

implementation 'com.google.android.gms:play-services-ads:22.4.0'

回到22.3.0版本,一切都很好。这是广告库中的一个bug吗?一些奇怪的版本混淆不同的图书馆版本,也许与房间或什么?

qc6wkl3g

qc6wkl3g1#

如果需要ListenableFuture,可以添加显式依赖项。
https://developer.android.com/guide/background/asynchronous/listenablefuture

dependencies {
    implementation "com.google.guava:guava:31.0.1-android"

    // To use CallbackToFutureAdapter
    implementation "androidx.concurrent:concurrent-futures:1.1.0"

    // Kotlin
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.6.0"
}
eivnm1vs

eivnm1vs2#

这似乎是Google的故意行为。我已经看过了maven repository page,用于22.3.0版本和22.4.0版本的工件,后者有一个编译依赖项,它是“空的,以避免与Guava冲突”。它看起来有点模糊,所以下面是依赖项在其描述中的内容(同样,这个依赖项在22.3.0中不存在):
Guava依赖于一个空的工件来表示它正在提供ListenableFuture --但也可以在第二个“版本”中使用,该版本包含com.google.common.util.concurrent.ListenableFuture类,没有任何其他Guava类。这个想法是:如果用户只需要ListenableFuture,则依赖ListenableFuture-1.0。- 如果用户想要所有的Guava,他们依赖于Guava,从Guava27.0开始,依赖于可避免的未来-9999.0-empty-to-avoid-conflict-with-guava。那个...
这是来自here ListenableFuture empty dependency的。
理想情况下,如果你想使用ListenableFuture,你应该声明Guava依赖项,但是如果你只需要ListenableFuture,你可以依赖于前面提到的工件,因为它似乎可以完成这项工作。这就是:
implementation("com.google.guava:listenablefuture:1.0")

相关问题