我正在构建一个项目,它有两个类(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
如果我为带有Nougat的手机构建它,则没有问题。
我读过有关使用parcelsIndex的内容,但Parceler并不支持版本I使用 - 1.1.8。
是否有针对此问题的修复程序?
答案 0 :(得分: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
并且库正在使用版本{{1} }。在构建项目时,所有依赖项都被采用并“下载”,在这种情况下,您已经下载了同一个库的2个版本,并且您有重复的条目。您没有很多选项,但使用相同版本25.3.0
使用,这意味着在您的情况下,使用最新版本构建项目。
Fyi,更多信息:在library_x
下,您实际上可以看到导致问题的价值。
答案 1 :(得分:0)
我在不同的模块中使用这些类 - 这似乎导致了它。虽然可能有一些解决方案使用@ParcelClass
注释(https://github.com/johncarl81/parceler/issues/225?),但我只是将它们移动到同一个模块,现在它正在建设中。