9

请注意此项目在升级到 Android Studio 3.1、Gradle 构建工具 3.1.0 和 Gradle Wrapper 4.4 之前编译成功。

在 Gradle 任务 transformClassesAndResourcesWithPrepareIntermediateJarsForSomethingDebug 期间发生异常:

Caused by: java.util.zip.ZipException: duplicate entry: com/me/utils/model/singleModel/NodeModel.class

请注意,该异常仅发生在 Kotlin 类(如上面的 NodeModel)上。如果我删除这个类,异常将发生在下一个 Kotlin 类上。

SO上提到此异常的所有其他问题都与项目依赖项中的重复第三方库有关。然而这不是我的情况,因为 NodeModel 是我自己编写的自定义类。它实际上只是一个简单的 Kotlin 数据类。

该项目使用 Kotlin 版本 1.2.30,构建工具 27.0.3,支持库 27.1.0 和 Firebase 12.0.1。

我曾多次尝试清理和重建项目,在本地 JDK 和嵌入式 JDK 之间进行切换,但没有任何效果。

我尝试使用 --stacktrace --debug 运行 Gradle 以找出重复项来自何处,但 Gradle 日志没有提及任何相关内容。

4

3 回答 3

4

更新的答案

即使使用下面提到的解决方法,我仍然偶尔会遇到异常。现在 Android Studio 3.1.1 已经发布,这个问题已经完全消失了。只需确保更新到 Gradle 构建工具的 3.1.1 版,以及至少 4.4 版的 Gradle 包装器:

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

在项目中build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        ...
    }
}

初步答案

将 Gradle Wrapper 版本增加到 4.6 为我修复了它,但只是暂时的。第二天再次出现异常。

到目前为止,我发现的唯一可行的解​​决方案是将 Gradle Wrapper 降级回 4.3.1,并将 Gradle 构建工具降级到 3.0.0,直到有新的稳定版本的 Gradle 构建工具可用。

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip

在项目中build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        ...
    }
}
于 2018-04-03T14:20:08.180 回答
0

我有同样的问题,只是在修改以前编译的文件时它对我不起作用(干净的构建会起作用)。将 Android Gradle 插件从 3.1.3 更改为 3.2.0-beta02 为我解决了这个问题。

于 2018-09-06T12:18:16.807 回答
-1

解决将 java 和 kotlin 源代码拆分为单独模块的问题。不要在一个模块中混合使用 java 和 kotlin。它会产生一些关于重复的奇怪错误,即使我只有一门课

于 2019-02-06T23:08:54.800 回答