【发布时间】:2014-10-14 08:19:20
【问题描述】:
我听说很多人都会遇到这个错误:
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 完成预 dexing 后出现(因此是编译过程中的第二个)。
这是 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 编译应用程序。
非常感谢您的宝贵时间。
其他信息: 我使用带有 nbandroid 的 Netbeans 来构建应用程序
【问题讨论】: