【问题标题】:Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat with Gradle多个dex文件用Gradle定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat
【发布时间】:2014-08-19 13:04:18
【问题描述】:

当我运行./gradlew assembleDebug 时,我得到:

:app:dexDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/grub/Main/android-sdk-linux/build-tools/19.1.0/dx --dex --num-threads=4 --output 

合并的类和 jar 列表:

UNEXPECTED TOP-LEVEL EXCEPTION:
        com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

它与this question 非常相似,并且问题应该在多个 support-v4 库中。我清理了build.gradle

repositories {
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.1.0'

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
        versionCode 8
        versionName "2.1.17"
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:support-v4:20.+'
        compile ('com.google.android.gms:play-services:5+'){
            exclude group: 'com.android.support', module: 'support-v4'
        }
        compile(project(':libraries:com.typefacedwidgets')) {
            exclude group: 'com.android.support', module: 'support-v4'
        }
        compile(project(':libraries:com.truepagerindicator')) {
            exclude group: 'com.android.support', module: 'support-v4'
        }
        compile ('com.sothree.slidinguppanel:library:+'){
            exclude group: 'com.android.support', module: 'support-v4'
        }
        compile ('com.github.chrisbanes.pulltorefresh:sample:2.1.1+'){
            exclude group: 'com.google.android', module: 'support-v4'
        }
        compile 'com.thoughtworks.xstream:xstream:1.4.7'
        compile 'com.squareup.retrofit:retrofit:1.6.1'
        compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
        compile 'com.squareup.okhttp:okhttp:2.0.0'
        compile 'com.google.code.gson:gson:2.3'
        compile 'de.greenrobot:eventbus:2.2.1'
    }
}

为了检查依赖关系,我做了./gradlew -q -dependencies 显示:

+--- com.android.support:support-v4:20.+ -> 20.0.0
|    \--- com.android.support:support-annotations:20.0.0
+--- com.google.android.gms:play-services:5+ -> 5.2.08
+--- project :libraries:com.typefacedwidgets
+--- project :libraries:com.truepagerindicator
+--- com.sothree.slidinguppanel:library:+ -> 2.0.1
|    \--- com.nineoldandroids:library:+ -> 2.4.0
+--- com.github.chrisbanes.pulltorefresh:sample:2.1.1+ -> 2.1.1
|    +--- com.github.chrisbanes.pulltorefresh:library:2.1.1
|    +--- com.github.chrisbanes.pulltorefresh:extra-listfragment:2.1.1
|    |    \--- com.github.chrisbanes.pulltorefresh:library:2.1.1
|    \--- com.github.chrisbanes.pulltorefresh:extra-viewpager:2.1.1
|         \--- com.github.chrisbanes.pulltorefresh:library:2.1.1
+--- com.thoughtworks.xstream:xstream:1.4.7
|    +--- xmlpull:xmlpull:1.1.3.1
|    \--- xpp3:xpp3_min:1.1.4c
+--- com.squareup.retrofit:retrofit:1.6.1
|    \--- com.google.code.gson:gson:2.2.4 -> 2.3
+--- com.squareup.okhttp:okhttp-urlconnection:2.0.0
|    \--- com.squareup.okhttp:okhttp:2.0.0
|         \--- com.squareup.okio:okio:1.0.0
+--- com.squareup.okhttp:okhttp:2.0.0 (*)
+--- com.google.code.gson:gson:2.3
\--- de.greenrobot:eventbus:2.2.1

看起来应该没问题,但问题仍然存在。

更新:

问题在于 apkLib 依赖并混淆了 Gradle 的 msg。就像在this 中一样解决了将 Android-PullToRefresh 放入 Gradle 中单独的 android 库项目的答案。

【问题讨论】:

  • 在我的情况下,由于多个 support-v4 jar 文件发生了类似的错误。为了解决这个问题,我去了构建路径 > 配置构建路径 > 库选项卡。然后找到Android私有库并删除。清理项目并运行。
  • @Satish Gadhave 你这是什么意思?我从其他依赖项中排除了所有其他 support-v4 库,只留下了一个。但它会发生偷窃。
  • Pulltorefresh add to gradle 的可能副本
  • 我认为这很混乱,因为您试图将示例作为依赖项引入,它对 apklib 具有传递依赖关系,而 Gradle 不知道如何处理 apklibs。顺便说一句,您的 pulltorefresh 排除设置错误(com.android.support 不是 com.google.android),但修复它并不能解决问题
  • 我已经提交了code.google.com/p/android/issues/detail?id=75039关于这个;当您尝试依赖 apklib 时,Gradle 应该会提供更好的错误消息。

标签: android gradle android-gradle-plugin


【解决方案1】:

当我导入一些需要 Google Play 服务的库时,我出现了这个错误,

我刚从:

compile 'com.google.android.gms:play-services:6.5.87'

到:

compile ('com.google.android.gms:play-services:6.5.87') {
    exclude module: 'support-v4'
}

现在可以正常编译了

【讨论】:

    【解决方案2】:

    问题在于 apkLib 依赖并混淆了 Gradle 的 msg。就像在this 回答中一样解决了将 Android-PullToRefresh 放入 Gradle 中单独的 android 库项目中。

    【讨论】:

      【解决方案3】:

      我刚刚重建了项目。解决了

      【讨论】:

        猜你喜欢
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        相关资源
        最近更新 更多