android – Parceler ZipException“重复条目”

我正在构建一个项目,它有两个类(A和B),它们都继承自BaseClass. A和B这两个类都有注释@Parceler.当我为OS ver 4.1.2(API 16)的手机构建它时,它给了我这个错误:

Execution failed for task ':app:transformClassesWithJarMergingForDebug'.  
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry:  
com/example/BaseClass$$PackageHelper.class

如果我为带有牛轧糖的手机制作它,就没有问题.

我读过有关使用parcelsIndex的内容,但Parceler不支持我使用的版本 – 1.1.8.

这个问题有什么问题吗?

最佳答案 导致此错误的原因是您对同一个库使用了2个依赖项,并且具有不同版本的依赖项.

对于你的情况,我需要更多的数据,但我会举一个例子来解释你的问题:说你的项目使用库x,而库x使用依赖:
编译“com.android.support:appcompat-v7:25.3.0”

这就是你的gradle的样子:

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile "com.company.library_x:+"
    compile "com.android.support:appcompat-v7:23.4.0"
}

这是事情,因为您使用相同的依赖项,library_x并且您在依赖项中有冲突,因为您正在导入版本23.4.0并且库使用的是版本25.3.0.在构建项目时,所有依赖项都被采用并“下载”,在这种情况下,您已经下载了同一个库的2个版本,并且您有重复的条目.您没有很多选项,但使用相同的版本library_x使用,这意味着在您的情况下,使用最新版本构建项目.

Fyi,更多信息:在build-> intermediates-> explosion-aar-> appcompat-v7-> 25.3.0-> … class_of_the_error.class您实际上可以看到导致问题的值.

点赞