Proguard错误:多个dex文件定义Activity

时间:2014-10-14 08:19:20

标签: android ant proguard

我听说很多人都会收到这个错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lfoo.bar.MyActivity;

然而,我在StackOverflow上找到的解决方案都不适用于我。

我读到当你在项目中多次包含同一个库时可能会导致这个错误,但奇怪的是foo.bar.MyActivity只在一个库中定义,而且该库只包含在我的一次项目

请注意,foo.bar.MyActivity是在Android库中定义的,而不是在jar中定义的。

另一个奇怪的事情是,如果我关闭ProGuard,我可以正确地编译和运行应用程序:只有在Proguard完成预处理之后才出现错误(所以编译过程中的第二个错误)。

这里是proguard给出的错误的完整堆栈跟踪:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lfoo.bar.MyActivity;
Merged dex A (4111 defs/3053.8KiB) with dex B (47 defs/47.0KiB). Result is 4158 defs/3628.2KiB. Took 0.6s
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

您对如何解决我的问题有任何想法吗?

PS:我使用Ant编译应用程序。

非常感谢你的时间。

其他信息: 我使用Netbeans和nbandroid构建应用程序

1 个答案:

答案 0 :(得分:1)

  

试着希望它可以解决你的问题

我遇到了同样的问题,非常奇怪,因为它只在使用Eclipse时才会发生(但是对于Ant来说还可以)。这就是我修复它的方法:

右键单击“项目名称” 选择构建路径 - >配置构建路径 在Java Build Path中,转到Order and Export

选项卡

取消选中您的.jar库

有时候:在Order and Export选项卡中我没有任何jar库,所以我取消选中了Android Private Libraries项。现在我的项目正在运行。