Parceler ZipException "duplicate entry"
Parceler ZipException "duplicate entry"
我正在构建一个项目,其中有两个 类(A 和 B)都继承自 BaseClass。 类,A 和 B,都有注解@Parceler。当我用 OS ver 4.1.2 (API 16) 为 phone 构建它时,它给了我这个错误:
Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry:
com/example/BaseClass$$PackageHelper.class
如果我用 Nougat 为 phone 构建它,没有问题。
我读过有关使用 parcelsIndex 的信息,但 Parceler 不支持我使用的版本 - 1.1.8。
是否有解决此问题的方法?
我在不同的模块中使用 类 - 这似乎是造成它的原因。虽然可能有一些使用 @ParcelClass
注释的解决方案(https://github.com/johncarl81/parceler/issues/225 ?),但我只是将它们移动到同一个模块,现在构建良好。
此错误是因为您对同一个库使用了 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
。当你构建一个项目时,所有的依赖项都被获取并且'downloaded',在这种情况下,你已经下载了同一个库的两个版本并且你有重复的条目。您没有太多选择,但要使用相同的版本 library_x
,这意味着在您的情况下,使用最新版本构建您的项目。
Fyi,更多信息:在 build->intermediates->exploded-aar->appcompat-v7->25.3.0->...class_of_the_error.class
下,您实际上可以看到导致问题的值。
我正在构建一个项目,其中有两个 类(A 和 B)都继承自 BaseClass。 类,A 和 B,都有注解@Parceler。当我用 OS ver 4.1.2 (API 16) 为 phone 构建它时,它给了我这个错误:
Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry:
com/example/BaseClass$$PackageHelper.class
如果我用 Nougat 为 phone 构建它,没有问题。
我读过有关使用 parcelsIndex 的信息,但 Parceler 不支持我使用的版本 - 1.1.8。
是否有解决此问题的方法?
我在不同的模块中使用 类 - 这似乎是造成它的原因。虽然可能有一些使用 @ParcelClass
注释的解决方案(https://github.com/johncarl81/parceler/issues/225 ?),但我只是将它们移动到同一个模块,现在构建良好。
此错误是因为您对同一个库使用了 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
。当你构建一个项目时,所有的依赖项都被获取并且'downloaded',在这种情况下,你已经下载了同一个库的两个版本并且你有重复的条目。您没有太多选择,但要使用相同的版本 library_x
,这意味着在您的情况下,使用最新版本构建您的项目。
Fyi,更多信息:在 build->intermediates->exploded-aar->appcompat-v7->25.3.0->...class_of_the_error.class
下,您实际上可以看到导致问题的值。