android - 升级到最新的Android Gradle Plugin AndoidX后Gradle报错

标签 android android-studio guava androidx

升级到最新的 AndroidX 库和 Android Gradle 插件后,当我在我的项目上运行 lint 时,lint 构建失败。

这一切都始于最新的 Android Gradle 插件在构建我的项目时提示 Program type already present:com.google.common.util.concurrent.ListenableFuture

错误如下:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:lint'.
> Could not resolve all artifacts for configuration ':app:debugAndroidTestRuntimeClasspath'.
   > Could not resolve com.google.guava:guava:23.6-android.
     Required by:
         project :app
      > Cannot find a version of 'com.google.guava:guava' that satisfies the version constraints: 
           Dependency path 'Code Base:app:unspecified' --> 'androidx.test.ext:truth:1.1.0' --> 'com.google.guava:guava:26.0-android'
           Dependency path 'Code Base:app:unspecified' --> 'com.google.truth:truth:0.42' --> 'com.google.guava:guava:25.1-android'
           Dependency path 'Code Base:app:unspecified' --> 'androidx.room:room-guava:2.1.0-alpha03' --> 'com.google.guava:guava:23.6-android'
           Dependency path 'Code Base:app:unspecified' --> 'com.google.api-client:google-api-client:1.25.0' --> 'com.google.guava:guava:20.0'
           Dependency path 'Code Base:app:unspecified' --> 'androidx.test.ext:truth:1.1.0' --> 'com.google.truth:truth:0.42' --> 'com.google.guava:guava:25.1-android'
           Constraint path 'Code Base:app:unspecified' --> 'com.google.guava:guava' strictly '23.6-android' because of the following reason: debugRuntimeClasspath uses version 23.6-android
           Constraint path 'Code Base:app:unspecified' --> 'com.google.guava:guava' strictly '23.6-android' because of the following reason: debugRuntimeClasspath uses version 23.6-android
           Constraint path 'Code Base:app:unspecified' --> 'com.google.guava:guava' strictly '23.6-android' because of the following reason: debugRuntimeClasspath uses version 23.6-android
           Constraint path 'Code Base:app:unspecified' --> 'com.google.guava:guava' strictly '23.6-android' because of the following reason: debugRuntimeClasspath uses version 23.6-android

   > Could not resolve org.checkerframework:checker-compat-qual:2.0.0.
     Required by:
         project :app
      > Cannot find a version of 'org.checkerframework:checker-compat-qual' that satisfies the version constraints: 
           Dependency path 'Code Base:app:unspecified' --> 'com.google.truth:truth:0.42' --> 'org.checkerframework:checker-compat-qual:2.5.3'
           Dependency path 'Code Base:app:unspecified' --> 'androidx.test.ext:truth:1.1.0' --> 'com.google.guava:guava:26.0-android' --> 'org.checkerframework:checker-compat-qual:2.5.2'
           Dependency path 'Code Base:app:unspecified' --> 'androidx.test.ext:truth:1.1.0' --> 'com.google.truth:truth:0.42' --> 'org.checkerframework:checker-compat-qual:2.5.3'
           Constraint path 'Code Base:app:unspecified' --> 'org.checkerframework:checker-compat-qual' strictly '2.0.0' because of the following reason: debugRuntimeClasspath uses version 2.0.0
           Constraint path 'Code Base:app:unspecified' --> 'org.checkerframework:checker-compat-qual' strictly '2.0.0' because of the following reason: debugRuntimeClasspath uses version 2.0.0
           Constraint path 'Code Base:app:unspecified' --> 'org.checkerframework:checker-compat-qual' strictly '2.0.0' because of the following reason: debugRuntimeClasspath uses version 2.0.0
           Constraint path 'Code Base:app:unspecified' --> 'org.checkerframework:checker-compat-qual' strictly '2.0.0' because of the following reason: debugRuntimeClasspath uses version 2.0.0

   > Could not resolve com.google.errorprone:error_prone_annotations:2.1.3.
     Required by:
         project :app

我尝试输入以下内容,但它不起作用:

subprojects {
    project.configurations.all {

        exclude group: 'com.google.guava', module: 'failureaccess'


        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }

            if('guava' == details.requested.name) {
                details.useVersion '27.0-android'
            }

        }
    }
}

我可以知道错误的含义以及如何解决吗? 谢谢。

最佳答案

检查您是否没有重复的变量依赖项。例如:

implementation 'com.google.truth:truth:0.42' 
...
androidTestImplementation 'com.google.truth:truth:0.42' 

关于android - 升级到最新的Android Gradle Plugin AndoidX后Gradle报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54643053/

相关文章:

android - 如果一个方法在 onResume() 中运行,那么在 onCreate() 中运行该方法是否会是多余的?

android - 导航 View android中的标题重复

java - 从服务器搜索 json 数组的搜索栏

php - org.json.JSONException : Value Connected of type java. lang.String 无法转换为 JSONObject

Android Studio 继续获得 Unsupported major.minor 版本 52.0

java - 我可以用 Guava 将文本换行到给定的宽度吗?

android - RecyclerView 在开始时闪烁数据使行不可见

java - 如何将声音从 Android 设备流式传输到 Java 服务器?

java - 如何将 List<A> 转换为 List<B>?

java - 如何使用权重器更改 Guava 缓存驱逐策略