错误:任务执行失败":app:transformClassesWithJarMergingForDebug"。
com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:螺栓/聚合异常.class
这就是错误的样子。我知道bolts
用于我的三个依赖项,com.facebook.fresco:fresco:0.10.0
、com.parse:parse-android:1.13.1
和一个jar ePOS2.jar
。
我尝试了多种解决方案,从开始
compile('com.facebook.fresco:fresco:0.10.0') {
exclude group: 'com.parse.bolts', module: 'bolts-android'
}
但我还是犯了错误。我还试图从com.parse:parse-android1.13.1
中排除一些部分,如本文所示,但后来我得到了丢失类的错误。
我也启用了multidex
,如本文所示,但错误仍然存在。
如本文所示,我试图排除com/parse/bolts/AggregateException.class
,但仍然出现错误。
最奇怪的是,如果我启用InstantRun
,我可以运行应用程序,但当它使用jar中的某个类时会崩溃。
java.lang.UnsisfiedLinkError:com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader
所以,我想是否可以从jar或com.parse:parse-android:1.13.1
中排除某个类AggregateException.class
?
编辑
compile('com.facebook.w壁画:壁画:0.10.0'({排除模块:'螺栓android'}
或
compile('com.facebook.w壁画:壁画:0.10.0'({排除组:"com.parse.bolts",模块:'螺栓android'}
我试图将bolts
从com.facebook.fresco:fresco:0.10.0
中排除,但无论我做什么,它们仍然会出现:
+--- com.android.support:multidex:1.0.1
+--- com.android.support:design:23.3.0
| +--- com.android.support:appcompat-v7:23.3.0
| | +--- com.android.support:support-vector-drawable:23.3.0
| | | --- com.android.support:support-v4:23.3.0
| | | --- com.android.support:support-annotations:23.3.0
| | +--- com.android.support:animated-vector-drawable:23.3.0
| | | --- com.android.support:support-vector-drawable:23.3.0 (*)
| | --- com.android.support:support-v4:23.3.0 (*)
| +--- com.android.support:support-v4:23.3.0 (*)
| --- com.android.support:recyclerview-v7:23.3.0
| +--- com.android.support:support-v4:23.3.0 (*)
| --- com.android.support:support-annotations:23.3.0
+--- com.makeramen:roundedimageview:2.2.1
+--- com.facebook.fresco:fresco:0.10.0
| +--- com.facebook.fresco:drawee:0.10.0
| | +--- com.android.support:support-v4:23.1.1 -> 23.3.0 (*)
| | --- com.facebook.fresco:fbcore:0.10.0
| +--- com.facebook.fresco:fbcore:0.10.0
| --- com.facebook.fresco:imagepipeline:0.10.0
| +--- com.android.support:support-v4:23.1.1 -> 23.3.0 (*)
| +--- com.nineoldandroids:library:2.4.0
| +--- com.facebook.fresco:fbcore:0.10.0
| +--- com.facebook.fresco:imagepipeline-base:0.10.0
| | +--- com.android.support:support-v4:23.1.1 -> 23.3.0 (*)
| | +--- com.nineoldandroids:library:2.4.0
| | +--- com.facebook.fresco:fbcore:0.10.0
| | --- com.parse.bolts:bolts-android:1.1.4 !!! HERE
| --- com.parse.bolts:bolts-android:1.1.4 !!! HERE
+--- com.facebook.fresco:imagepipeline-okhttp:0.7.0
| +--- com.squareup.okhttp:okhttp:2.3.0
| | --- com.squareup.okio:okio:1.3.0
| +--- com.facebook.fresco:imagepipeline:0.7.0 -> 0.10.0 (*)
| --- com.facebook.fresco:fbcore:0.7.0 -> 0.10.0
+--- com.parse:parse-android:1.13.1
| --- com.parse.bolts:bolts-tasks:1.4.0
--- uk.co.chrisjenx:calligraphy:2.2.0
--- com.android.support:appcompat-v7:23.1.1 -> 23.3.0 (*)
duplicate entry
错误通常源于打包程序试图打包同一类的多个不同版本。
您似乎只排除了螺栓库的特定部分。这导致您的构建混合了库的其余部分的两个不同版本,这些部分可能仍然有一些重叠的类。
在我的项目中,我将整个库从每个模块中排除,然后强制使用统一的bolts版本来管理所有模块。
在我的gradle构建中,我从所有依赖于螺栓的模块中排除了螺栓,如下所示:
compile('com.facebook.android:facebook-android-sdk:4.14.1') {
exclude group: 'com.parse.bolts'
}
然后强制所有模块使用最新的螺栓:
compile 'com.parse.bolts:bolts-android:1.+'
我在生成APK时遇到问题,我使用的是:
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:cardview-v7:23.3.0'
compile ('com.sromku:simple-fb:4.1.1')
然后我将其修改为:
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:cardview-v7:23.3.0'
compile ('com.sromku:simple-fb:4.1.1'){
exclude group: 'com.parse.bolts'
}
它就像一个CHARM!