我可以启用DEX详细日志记录吗?

Mag*_*son 5 android intellij-idea

我将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)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚原因是什么,多个JAR的所有常见嫌疑人似乎都没问题.

有没有办法打开详细日志记录,以便更好地了解哪些库存在冲突?

sno*_*gon 1

我不知道如何从 DEX 获得更好的错误描述,但这里有 2 个排除故障的建议:

  1. 如果使用 Android Studio,只需搜索有问题的类FinalizableReference(在搜索中包括非项目类)。(用于Command+N查找类或双击Shift“到处搜索”。对于 Eclipse:?Ctrl+Shift+T其他人可以确认。

  2. 使用命令行:jar tf mylib.jar | grep FinalizableReference将在 mylib 中搜索该类。然后,您可以for对 jar 文件(通常在 libs 目录中)使用一些 shell 循环。还将grep -r FinalizableReference libs/*\.jar扫描所有罐子(假设您将它们放在库中)并通知那些匹配的罐子(重复项)。