我为什么会收到“Multiple dex files define Landroid/support/v7/recyclerview/extensions/ListAdapter”错误信息?

4

我遇到了可怕的 java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 错误。堆栈跟踪显示根本原因是:

Caused by: com.android.dex.DexException: Multiple dex files define Landroid/support/v7/recyclerview/extensions/ListAdapter;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
        at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)

根本原因是什么?

2个回答

10

很可能,您正在尝试使用这两个依赖项:

implementation "android.arch.paging:runtime:1.0.0-alpha5"
implementation "com.android.support:recyclerview-v7:27.1.0"
from the Paging runtime, available in 2.4.0-alpha01 and higher versions.
implementation "android.arch.paging:runtime:1.0.0-alpha6"
implementation "com.android.support:recyclerview-v7:27.1.0"

1
我花了好几分钟时间想弄清楚你为什么回答得这么快...最后才明白自己只是花了一秒钟。 - Ben Mohorc
6
是的,有时候我解决了一个问题之后,会写一篇问答对来帮助其他人。一部分原因是为了防止以后再遇到同样的问题而忘记了解决方法,这样当我需要搜索答案时就可以找到自己的解答了。未来的我偶尔会感激过去的我留下的答案... :-) - CommonsWare
我已将recyclerview更新至27.1.0版本,但仍然遇到相同的问题。有什么建议吗? - Brandon
@Brandon:你更新了android.arch.paging:runtime1.0.0-alpha6了吗? - CommonsWare
@CommonsWare 原来我只是等了几天,依赖关系自己解决了! - Brandon

1
我遇到了一个类似但不同的错误信息,没有其他可疑的gradle依赖项可能与implementation 'com.android.support:recyclerview-v7:28.0.0'发生冲突。

多个dex文件定义Landroid/support/v7/widget/DefaultItemAnimator$6;

最终,我发现在该项目的lib目录中已经存在一个名为android-support-v7-recyclerview.jar的文件。
删除此文件并与gradle同步,然后一切都正常了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接