为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2019-11-18 14:11:46
将Google Analytics(分析)的配置添加到我的Android项目并构建该项目时,出现以下错误::app:transformClassesWithDexForDebugUNEXPECTED 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)这是什么意思,如何防止该错误?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

这里的游戏稍晚一些,但这很可能是您在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分析仪查看其是否真正需要!


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 957 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信