我正在构建一个项目,它有两个类(a和b),它们都继承自基类。两个类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版本。
这个问题有什么解决办法吗?

最佳答案

导致此错误的原因是,您对同一个库使用了两个依赖项,并且依赖项的版本不同。
对于您的情况,我需要更多的数据,但我将给出一个示例来解释您的问题:假设您的项目使用库x,而库x使用依赖项:
compile "com.android.support:appcompat-v7:25.3.0"
你的毕业生就是这样的:

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。构建项目时,将获取并“下载”所有依赖项,在本例中,您下载了同一库的两个版本,并且有重复的条目。您没有很多选择,但是要使用同一版本的library_xuses,这意味着在您的情况下,使用最新版本构建您的项目。
仅供参考,更多信息:在build->intermediates->exploded-aar->appcompat-v7->25.3.0->...class_of_the_error.class下,您实际上可以看到导致问题的值。

08-18 14:13