我已经看过几次了,但是还没有找到解决方案-在将Gradle升级到4.10.2并将Android gradle插件升级到3.2.1之后,尝试构建Android时遇到很多困难应用程式。这似乎是插件之间的不兼容,特别是与所使用的Guava版本有关。我相信这是我正在使用的AWS插件之一,但引起了问题,但我使用的是最新版本,我找不到任何简单的方法来分离需要AWS插件的gradle脚本和需要AWS插件的gradle脚本。 Android插件。加载AWS插件时,有什么方法可以告诉gradle使用哪个版本的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)
...
答案 0 :(得分:0)
最后通过将其添加到root build.gradle中使其工作:
configurations.all {
resolutionStrategy {
force "com.google.guava:guava:23.0"
force "commons-logging:commons-logging:1.2"
force "commons-io:commons-io:2.4"
}
}
解决了与番石榴的第一个冲突之后,又有2条冲突,因此需要额外的一行。
App似乎可以正常构建和运行,并且AWS命令执行正常。