升级到最新的AndroidX libs和Android Gradle插件后,当我在项目上运行lint时,lint构建失败。
这一切都始于最新的Android Gradle插件,抱怨程序类型已经存在: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 'C3 Mobile Code Base:app:unspecified' --> 'androidx.test.ext:truth:1.1.0' --> 'com.google.guava:guava:26.0-android'
Dependency path 'C3 Mobile Code Base:app:unspecified' --> 'com.google.truth:truth:0.42' --> 'com.google.guava:guava:25.1-android'
Dependency path 'C3 Mobile Code Base:app:unspecified' --> 'androidx.room:room-guava:2.1.0-alpha03' --> 'com.google.guava:guava:23.6-android'
Dependency path 'C3 Mobile Code Base:app:unspecified' --> 'com.google.api-client:google-api-client:1.25.0' --> 'com.google.guava:guava:20.0'
Dependency path 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile Code Base:app:unspecified' --> 'com.google.truth:truth:0.42' --> 'org.checkerframework:checker-compat-qual:2.5.3'
Dependency path 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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 'C3 Mobile 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'
}
}
}
}
我可以知道错误的含义,我该如何解决?谢谢。
我也试图解决这个问题,对我而言,这是由于新的Google地方库:
implementation "com.google.android.libraries.places:places:1.0.0"
这导致androidTest
下的测试失败。
作为一种解决方法,我将此添加到build.gradle
:
configurations {
androidTestImplementation.exclude module: 'guava'
androidTestImplementation.exclude module: 'error_prone_annotations'
androidTestImplementation.exclude module: 'checker-qual'
}
它修复了lint和Android测试。虽然不确定后果。
编辑:在你的情况下,你可能不得不把checker-compat-qual
而不是checker-qual
检查您是否没有变体的重复依赖项。例如:
implementation 'com.google.truth:truth:0.42'
...
androidTestImplementation 'com.google.truth:truth:0.42'
更改
details.useVersion '27.0-android'
至
details.useVersion '23.6-android'
由于错误消息Could not resolve com.google.guava:guava:23.6-android.
告诉它需要版本23.6-android