如何修复android多个dex文件定义异常

And*_*rus 2 android gradle dex android-studio android-gradle-plugin

Android 4.2 ZBarCodescan java应用程序需要在Windows 7 x64计算机中编译.

它的源代码位于此处.

安装了Android Studio,并使用Gi​​thub import命令导入代码.在gradle文件中API已更改为23

compileSdkVersion 23 
Run Code Online (Sandbox Code Playgroud)

根据

如何使用github的eclipse项目进行Android开发

Android studio Build APK命令会产生异常

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
    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)
Run Code Online (Sandbox Code Playgroud)

试图通过添加行来解决这个问题

dexOptions {
    preDexLibraries = false
}
Run Code Online (Sandbox Code Playgroud)

两个项目的gradle行根据

多个dex文件定义了Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat

导致错误

Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoJellyBeanMr2;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

这里的答案建议检查依赖树.如何在Android Studio中获取此树以及如何修复它?

删除android-support-v4.jar异常后

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
    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)
Run Code Online (Sandbox Code Playgroud)

仍然会发生.

更新.我尝试使用https://github.com/cricket007/DeviceSDK/tree/fixes url importfixes分支 但是测试按钮和导入产生错误

错误

如何导入这个分支?

Gab*_*tti 5

意外的顶级异常:com.android.dex.DexException:多个dex文件定义了Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat $ AccessibilityServiceInfoVersionImpl;

它发生了,因为你正在添加两个相同的类.

在您的情况下,您正在使用:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)

与... appcompat-v7有依赖关系support-v4.
你有android-support-v4.jarlibs文件夹.

删除android-support-v4.jar(你不需要它,因为appcompat已经有了它).