0

我已经多次看到这个问题,但还没有找到解决方案 - 在将 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)
 ...
4

1 回答 1

0

最后通过将其添加到根 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 个冲突,因此需要额外的行。

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

于 2018-12-04T01:11:52.057 回答