意外的最高级别异常:com.android.dex.DexException:定义了多个dex文件

将Google Analytics(分析)的配置添加到我的Android项目并构建该项目时,出现以下错误:


:app:transformClassesWithDexForDebug

UNEXPECTED TOP-LEVEL EXCEPTION:

com.android.dex.DexException: Multiple dex files define Ljavax/inject/Inject;

    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)

    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)

    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)

    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)

    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)

    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)

    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)

    at com.android.dx.command.dexer.Main.run(Main.java:277)

    at com.android.dx.command.dexer.Main.main(Main.java:245)

    at com.android.dx.command.Main.main(Main.java:106)


FAILURE: Build failed with an exception.


* What went wrong:

Execution failed for task ':app:transformClassesWithDexForDebug'.

> com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2


* Try:

Run with --info or --debug option to get more log output.


* Exception is:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForDebug'.

    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)

    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)

    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)

    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)

这是什么意思,如何防止该错误?


米脂
浏览 960回答 3
3回答

墨色风雨

这里的游戏稍晚一些,但这很可能是您在build.gradle文件中为您的应用列出的依赖项存在的问题。经过大量测试,我成功地解决了我的问题,并认为这可能对其他人有所帮助。我不推荐的事情:除非您绝对需要在自己的build.gradle中启用multiDex,否则不要这样做,这只是解决了应用程序中的根本问题,而不是根本问题。您也不必要地增加了APK的大小,并且当dex文件中的方法冲突时,可能会导致意外崩溃。要注意的事情:在build.gradle文件中检查所有依赖项。您要引用的依赖项还包括已经包含的依赖项吗?例如,如果包含appcompat-v7,则无需包含appcompat-v4,因为v7包含v4中的所有功能。我实际上发现了什么(我的问题导致我的应用超出了我的dex文件中的方法限制)----> GOOGLE PLAY SERVICES如果您不需要所有的Google Play服务库依赖项,请在build.gradle中远离此行compile 'com.google.android.gms:play-services:8.3.0',而只需使用所需的内容即可!!Google有完整的库列表,可在此处进行选择性编译话虽如此,您可能只需要在gradle中为您的Google Analytics(分析)添加这一行:  dependencies{       compile 'com.google.android.gms:play-services-analytics:8.3.0'  }编辑另外,您可以通过转到项目的根目录(或使用Android Studio中的终端)并运行以下命令来查看依赖关系树:./gradlew app:dependencies祝您好运,编码愉快!更新资料从Android Studio 2.2开始,无论您是否需要在应用程序中使用Multi-dex,您都不再需要反复试验。使用Apk分析仪查看其是否真正需要!
打开App,查看更多内容
随时随地看视频慕课网APP