gradle error语言 - com.google.common.collect.ImmutableSet.toImmu



我已经见过几次提到这一点,但还没有找到解决方案——在将Gradle升级到4.10.2并将Android Gradle插件升级到3.2.1之后,我在构建Android应用程序时遇到了很多困难。这似乎是插件之间的不兼容,特别是与使用中的Guava版本有关。我相信是我使用的AWS插件之一导致了这个问题,但我使用的是最新版本,我找不到任何简单的方法来区分需要AWS插件的gradle脚本和需要Android插件的grade脚本。有没有什么方法可以告诉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)
...

通过将其添加到根构建中,最终使其正常工作

configurations.all {
resolutionStrategy {
force "com.google.guava:guava:23.0"
force "commons-logging:commons-logging:1.2"
force "commons-io:commons-io:2.4"
}
}

在解决了与番石榴的第一次冲突后,又有两次冲突,因此需要额外的线路。

应用程序似乎构建和运行良好,AWS命令执行正常。

相关内容

最新更新