为什么我得到"多个dex文件定义Landroid/support/v7/recyclerview/extensions/ListAdapter"

Com*_*are 4 android android-recyclerview android-architecture-lifecycle android-architecture-components

我得到了可怕的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)
Run Code Online (Sandbox Code Playgroud)

根本原因是什么?

Com*_*are 10

最有可能的是,您正在尝试使用这两个依赖项:

implementation "android.arch.paging:runtime:1.0.0-alpha5"
implementation "com.android.support:recyclerview-v7:27.1.0"
Run Code Online (Sandbox Code Playgroud)

冲突的类(android.support.v7.recyclerview.extensions.ListAdapter)recyclerview-v7从分页移动到runtime...但只有1.0.0-alpha6或更高的分页runtime.有了1.0.0-alpha5,再加上27.1.0支持库的,你在这两个地方同一类.

相反,迁移到:

implementation "android.arch.paging:runtime:1.0.0-alpha6"
implementation "com.android.support:recyclerview-v7:27.1.0"
Run Code Online (Sandbox Code Playgroud)

  • @BenMohorc:是的,有时候,在解决问题之后,我会写一个问答式对.大多数情况下,帮助他人.部分地,如果我再次遇到它并忘记解决方案是什么,那么我在搜索中找到自己的答案.Future Me一直感谢Past Me的答案...... :-) (6认同)