安卓Dex:[活动名称]无法执行DX

8
当我编译我的项目时,出现以下错误:
错误:Android Dex:[OdeAl] 无法执行DX 错误:Android Dex:[OdeAl] com.android.dex.DexException:多个dex文件定义Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat $ AccessibilityServiceInfoVersionImpl; 在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)处的错误:Android Dex:[OdeAl] 在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)处的错误:Android Dex:[OdeAl] 在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)处的错误:Android Dex:[OdeAl] 在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)处的错误:Android Dex:[OdeAl] 在com.android.dx.merge.DexMerger.merge(DexMerger.java:188)处的错误:Android Dex:[OdeAl] 在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)处的错误:Android Dex:[OdeAl] 在com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)处的错误:Android Dex:[OdeAl] 在com.android.dx.command.dexer.Main.run(Main.java:230)处的错误:Android Dex:[OdeAl] 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)处的错误:Android Dex:[OdeAl] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)处的错误:Android Dex:[OdeAl] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)处的错误:Android Dex:[OdeAl] 在java.lang.reflect.Method.invoke(Method.java:597)处的错误:Android Dex:[OdeAl] 在org.jetbrains.android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.java:161)处的错误:Android Dex:[OdeAl] 在org.jetbrains.android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.java:294)处的错误:Android Dex:[OdeAl] 在com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)处的错误:Android Dex:[OdeAl]
如何解决这些错误?

2
你可能有重复的JAR文件,它们具有不同的名称,但在错误中定义了函数名称。这意味着如果有两个JAR文件,它们都包含相同的类/包。 - Rat-a-tat-a-tat Ratatouille
你的主项目中有附带任何库项目吗? - InnocentKiller
@InnocentKiller 是的,我已经附加了 support-v4 和 support-v7 应用兼容库。 - John Error
2
然后从您的主项目中删除android support v4.jar,并将其添加到来自外部库的jar文件中,然后尝试。 - InnocentKiller
2个回答

10
问题在于您引用了多个相同的LibraryClass
实际上,错误提示是说:
多个dex文件定义了Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImp 所以,您应该检查是否添加了重复的jar文件。如果是,请从libs文件夹中删除其中一个并清理项目。

我遇到了这个问题,我添加了libs目录并添加了另一个jar文件来更新我的应用程序,所以请从库列表中删除所有项目,然后再次添加它们,确保没有多重导入。 - Hossein Kurd

1

@Josef的答案一样,您可以知道什么是jar文件,它已经被导入到Android项目中两次或更多次,从而导致错误。

接下来是您的错误行:

com.android.dex.DexException: Multiple dex files define 

Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionI

这意味着在 Android 项目中,android-support-v4.jar 文件被导入了两次或更多次。

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