ListenableFuture 消失到哪里去了?

Where did ListenableFuture vanish to?

提问人:user1785730 提问时间:9/22/2023 最后编辑:user1785730 更新时间:9/22/2023 访问量:70

问:

我的应用突然无法再生成,并出现以下错误:

错误:软件包 com.google.common.util.concurrent 不存在

导入 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 版,一切都很好。这是广告库中的错误吗?一些不同库版本的奇怪版本混淆,也许是房间或其他什么?

Android android-studio android-gradle-plugin admob google-play-services

评论


答:

0赞 Blundell 9/22/2023 #1

如果需要,可以添加显式依赖项。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"
}
0赞 FearNot 9/22/2023 #2

这似乎是谷歌有意为之的。我查看了版本和 的工件的 maven 存储库页面,后者对 listenablefuture 具有编译依赖性,该依赖项为“空以避免与 Guava 冲突”。它看起来有点模棱两可,所以这是依赖项在其描述中所说的(同样,这个依赖项在 22.3.0 中不存在):22.3.022.4.0

Guava 依赖的一个空工件来表示它正在提供 ListenableFuture——但也可以在第二个“版本”中提供,其中包含 com.google.common.util.concurrent.ListenableFuture 类,没有任何其他 Guava 类。这个想法是: - 如果用户只想要 ListenableFuture,他们依赖于 listenablefuture-1.0。- 如果用户想要所有的番石榴,他们就依赖于番石榴,从番石榴 27.0 开始,番石榴依赖于 listenablefuture-9999.0-empty-to-avoid-conflict-with-guava。这。。。

这是从这里获取的 ListenableFuture 空依赖项

理想情况下,如果你想使用 ListenableFuture,你会声明 Guava 依赖项,但如果你只需要 ,你可以依赖上述工件,因为它似乎可以完成这项工作。就是这样:ListenableFuture

implementation("com.google.guava:listenablefuture:1.0")