我将我的 Android IntelliJ IDEA 项目从一个位置移动到另一个位置。由于某种原因,IDEA 丢失了所有模块,我不得不重新导入它们。
现在当我编译时,我得到这个 DEX 错误:
Error:Android Dex: [MyApp] Unable to execute DX
Error:Android Dex: [MyApp] com.android.dex.DexException: Multiple dex files define Lcom/google/common/base/FinalizableReference;
Error:Android Dex: [MyApp] at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
Error:Android Dex: [MyApp] at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
Error:Android Dex: [MyApp] at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
Error:Android Dex: [MyApp] at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
Error:Android Dex: [MyApp] at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
Error:Android Dex: [MyApp] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
Error:Android Dex: [MyApp] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
Error:Android Dex: [MyApp] at com.android.dx.command.dexer.Main.run(Main.java:230)
Error:Android Dex: [MyApp] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:Android Dex: [MyApp] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Error:Android Dex: [MyApp] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Error:Android Dex: [MyApp] at java.lang.reflect.Method.invoke(Method.java:597)
Error:Android Dex: [MyApp] at org.jetbrains.android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.java:161)
Error:Android Dex: [MyApp] at org.jetbrains.android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.java:294)
Error:Android Dex: [MyApp] at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)
我不知道是什么原因,所有常见的多个 JAR 的怀疑似乎都没有问题。
有没有办法打开详细日志记录以更好地了解哪些库存在冲突?
最佳答案
我不知道如何从 DEX 获得更好的错误描述,但这里有 2 个解决问题的建议:
如果使用 Android Studio,只需搜索有问题的类
FinalizableReference
(在搜索中包括非项目类)。 (使用Command+N
查找类或双击Shift
进行“到处搜索”。 对于 eclipse :Ctrl+Shift+T
?其他人可以确认。使用命令行:
<jar tf mylib.jar | grep FinalizableReference
将在 mylib 中搜索该类。然后,您可以在 jar 文件(通常在 libs 目录中)上使用一些 shellfor
循环。 此外,grep -r FinalizableReference libs/*\.jar
将扫描所有 jar(假设您在 libs 中有它们)并通知匹配的(重复项)。
关于android - 我可以启用 DEX 详细日志记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823606/