2017-06-23 55 views
4

我正在构建一个项目,它有两个类(A和B),都从BaseClass继承。这两个类,A和B都有注解@Parceler。当我建立它的手机OS版本4.1.2(API 16),它给了我这个错误:Parceler ZipException“重复项”

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。

是否有任何修复这个问题?

+0

如果可能,请添加有问题的代码。 –

+0

@PravinDivraniya,我不确定什么代码会造成这个问题。看起来更像是有两个Parcellable类从一个普通的Parcellable类继承是问题。 – rajath

回答

1

此错误是由于您对同一个库使用2个依赖项以及不同版本的依赖项造成的。

对于你的情况,我需要更多的数据,但我给这似乎可以解释你的问题的例子:假设你的项目使用库x和库X使用依赖性: compile "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。当你建立一个项目时,所有的依赖关系都会被采取并被“下载”,在这种情况下,你已经下载了同一个库的两个版本,并且你有重复的项目。您没有太多的选择,但要使用相同版本library_x用途,这意味着您的情况下,使用最新版本构建您的项目。

Fyi,一些更多的信息:在build->intermediates->exploded-aar->appcompat-v7->25.3.0->...class_of_the_error.class你实际上可以看到造成问题的价值。

+0

如果是这样的话,我会看到在https://stackoverflow.com/questions/42374151/all-com-android-support-libraries-must-use-the-exact-same-version-specification中给出的错误,但我不知道。另外,这个问题是由于我自己的类 - 不是库的。这也只在Release版本中。无论如何,它看起来像是因为在另一个模块中引用了一个Parcellable类 - 我刚刚将这些类移到了同一个模块中。尽管感谢您的帮助。 – rajath