【问题标题】:Android build fails over com.android.dex.DexException: Multiple dex files define Landroid/supportAndroid构建失败com.android.dex.DexException:多个dex文件定义Landroid/support
【发布时间】:2015-03-12 06:22:53
【问题描述】:

在 Android 项目中,团队主要仍然使用 Eclipse 添加了一些 3rd 方库,然后 Android Studio 无法在设备上运行,并且在运行 gradle build 时出现错误:

:preDexDebug                      
warning: Ignoring InnerClasses attribute for an anonymous inner class
(com.umeng.socialize.bean.a) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
warning: Ignoring InnerClasses attribute for an anonymous inner class
(com.umeng.socialize.bean.b) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

以此类推warning: Ignoring InnerClasses attribute 10 到 20 次用于不同的文件

(更新这些警告似乎是较旧的问题,请参阅 Dx warning issues with latest Android SDK 日期为 2011 年 11 月 2 日; 也在Many issues after upgrading to Android Studio 1.0)

warning: Ignoring InnerClasses attribute for an anonymous inner class
(com.tencent.mm.sdk.b.b) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

:dexDebug                    
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: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:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)

:dexDebug FAILED          

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_05\bin\java.exe'' finished with no
n-zero exit value 2

* Try:        
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED  

试过

buildToolsVersion "19.1.0"
compileSdkVersion 19

buildToolsVersion "22"
compileSdkVersion 22

buildToolsVersion "21.1.2"
compileSdkVersion 21

对于两个

compile 'com.android.support:appcompat-v7:19.0.+'

和 编译'com.android.support:appcompat-v7:21.0.+'

Eclipse ADT 没有问题。如何用 gradle / Android Studio 克服?

【问题讨论】:

  • 在您的项目中,您是否使用了任何已经包含 android support v4 并且正在导出的库?

标签: java android gradle android-gradle-plugin


【解决方案1】:

感谢 Guillermo Merino 的提示。 是的,那里有android-support-v4.jar

exclude解决了

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar', exclude: 'android-support-*.jar')
    //...
}

另见

【讨论】:

  • 如果您回答了自己的问题,请将其标记为正确。
猜你喜欢
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 2015-12-07
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多