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

标签 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)

我不知道是什么原因,所有常见的多个 JAR 的怀疑似乎都没有问题。

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

最佳答案

我不知道如何从 DEX 获得更好的错误描述,但这里有 2 个解决问题的建议:

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

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

    <

关于android - 我可以启用 DEX 详细日志记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823606/

相关文章:

android - 如何以编程方式在 View 上同时应用平移和缩放动画

android - 如何在 Android Studio 中仅显示来自日志的消息(隐藏时间、pid 等)

spring-boot - 将 Gradle 属性注入(inject) Spring Boot application.yml,在 IntelliJ IDEA 中不起作用

android - Android Studio 中的缩进代码快捷方式

Javascript IDE 可以在 js 代码中定位方法或属性的父对象?

android - 构建应用程序时出现警告 : "Expected stack map table for method with non-linear control flow."

android - 尝试拍摄新照片时应用程序崩溃

java - 错误 : no suitable constructor after update Android Studio from 0. 6.1 到 0.8.9

java - 父类中的私有(private)字段被子类隐藏/隐藏 - 检查以捕获它

android - 如何将 Android Open Accessory 模式实现为服务?