如果我从命令行运行gradle assembleDebug,我突然得到这个错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
    at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
    at com.android.dx.command.dexer.Main.run(Main.java:232)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:91)

如果我grep for v4,我会在构建文件夹中看到两个文件。

Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches

我的gradle文件只包括这个支持库:

compile 'com.android.support:support-v13:19.0.0'

我不知道r7库是如何被包含进来的。我已经运行gradle清洁,它总是出现在那里,当我重新运行assembleDebug。

如果我在构建目录中grep r7,我看到它在文件中:

Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches

如果我不包含v13,那么其他东西就不能编译。

但是v13不包括v4支持库吗?

这是播放服务AAR包和v13库之间的不兼容性吗?

我从gradleplease.appspot.com上抓取了gradle文件。

删除播放服务并不能解决这个问题;同样的错误。

我在build.gradle中的依赖项:

 dependencies {


 // Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'

// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}

当前回答

收到以下错误

“:app:transformDexArchiveWithDexMergerForDebug”任务执行失败。

com.android.build.api.transform.TransformException: com.android.dex.DexException:多个dex文件定义Landroid/support/constraint/ConstraintSet$1

修复:去构建->清洁项目

其他回答

一幅画胜过千言万语

为了让像我这样的初学者更容易更快地完成这项任务。以下是@edsappfactory.com发布的对我有效的答案截图:

首先打开Androidstudio右侧的Gradle视图,在应用的项目中选择Tasks,然后选择Android,然后右键单击androidDependencies,然后选择运行:

其次,你会看到这样的东西:

我发布这篇文章的主要原因是不容易知道在哪里执行gradle任务或上面发布的命令。这也是执行它们的地方。

因此,执行gradle命令:

第一:

第二:

这很容易。

这是它。

谢谢你!

我通过向我的构建中添加以下代码来解决类似的错误。android块中的Gradle文件。

android {
    dexOptions {
        preDexLibraries = false
    }
}

在我的案例中,问题是由版本不一致引起的:

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

解决方案很简单:将所有内容都设置为版本25

我在升级到ButterKnife 8.5.1时开始得到这个错误。其他的答案对我都没用。

我使用gradle -q:app:dependencies查看树,然后查看jar文件,直到发现冲突。冲突在于butterknife对com.android.support:support-compat:25.1.0的依赖包含了一个可访问性类的版本,com.android.support:support-v4 . 23.1.1也包含了这个类。

我通过改变我的依赖来解决这个问题:

compile 'com.jakewharton:butterknife:8.5.1'

:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

到目前为止,这似乎还没有影响到黄油刀的运作。

编辑:有一个更好的解决方案,这是升级我的android支持库,以匹配ButterKnife的:

compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'

我使用com.google.android.gms:play-services-analytics:8.3.0和 Android-support-v13.jar无法获取exclude模块:'support-v4'来工作。

对我来说有效的是使用android-support-v13人工制品而不是android-support-v13.jar文件。

例如,而不是

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile files('libs/android-support-v13.jar')

}

我使用

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile ('com.google.android:android-support-v13')

}