Ovi*_*diu 9 android android-gradle-plugin android-studio-3.1
请注意,在升级到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
Run Code Online (Sandbox Code Playgroud)
请注意,例外情况仅发生在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日志没有提到任何相关内容.
更新的答案
即使使用下面提到的解决方法,我仍然偶尔会遇到异常。现在Android Studio 3.1.1已经发布,这个问题已经完全消失了。只需确保更新到 Gradle 构建工具的版本 3.1.1,以及 Gradle 包装器的至少版本 4.4:
在gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
Run Code Online (Sandbox Code Playgroud)
在项目中build.gradle:
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
...
}
}
Run Code Online (Sandbox Code Playgroud)
初步答复
将 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
Run Code Online (Sandbox Code Playgroud)
在项目中build.gradle:
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
...
}
}
Run Code Online (Sandbox Code Playgroud)