我已经多次看到这个问题,但还没有找到解决方案 - 在将 Gradle 升级到 4.10.2 并将 Android gradle 插件升级到 3.2.1 之后,我在尝试构建 Android 应用程序时遇到了很多困难。这似乎是插件之间的不兼容,特别是与正在使用的 Guava 版本有关。我相信这是我正在使用的导致问题的 AWS 插件之一,但我使用的是最新版本,我找不到任何直接的方法来分离需要 AWS 插件的 gradle 脚本和需要 AWS 插件的脚本安卓插件。有什么方法可以告诉 gradle 在加载 AWS 插件时使用哪个版本的 Guava?我试过这个但无济于事:
buildscript {
repositories {
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.google.guava:guava:27.0.1-android"
classpath "jp.classmethod.aws:gradle-aws-plugin:0.38"
}
}
只需删除最后一个类路径条目即可解决问题,但我需要它来执行 AWS 任务。
奇怪的是,在我收到该错误并再次运行 gradle 后,我收到了一个完全不同的错误:“无法初始化类 com.android.build.gradle.internal.ide.ModelBuilder”。这似乎没有得到任何有用的谷歌点击。
FWIW堆栈跟踪是:
Caused by: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector;
at com.android.build.gradle.internal.ide.DependenciesImpl.<init>(DependenciesImpl.java:97)
at com.android.build.gradle.internal.ide.ModelBuilder.<clinit>(ModelBuilder.java:134)
at com.android.build.gradle.BasePlugin.registerModels(BasePlugin.java:612)
at com.android.build.gradle.BasePlugin.configureExtension(BasePlugin.java:576)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
at com.android.build.gradle.BasePlugin.apply(BasePlugin.java:290)
at com.android.build.gradle.AbstractAppPlugin.apply(AbstractAppPlugin.java:122)
at com.android.build.gradle.AppPlugin.apply(AppPlugin.java:43)
at com.android.build.gradle.AppPlugin.apply(AppPlugin.java:35)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:42)
...