我的应用程序突然不再构建了,并出现以下错误:
错误: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吗?一些奇怪的版本混淆不同的图书馆版本,也许与房间或什么?
2条答案
按热度按时间qc6wkl3g1#
如果需要
ListenableFuture
,可以添加显式依赖项。https://developer.android.com/guide/background/asynchronous/listenablefuture
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")