多个dex文件定义库中的文件

时间:2014-03-19 15:06:09

标签: android gradle

嘿,我不断收到错误

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lcom/hannesdorfmann/httpkit/DefaultHttpKit$1

如果我有重复的依赖关系,我会三重检查,但我找不到任何东西......

我的依赖关系看起来像这样:

+--- com.android.support:gridlayout-v7:19.0.1 | \--- com.android.support:support-v4:19.0.1 +--- com.android.support:support-v4:19.0.1 +--- com.google.maps.android:android-maps-utils:0.2+ -> 0.2.1 | \--- com.google.android.gms:play-services:3.1+ -> 4.0.30 | \--- com.android.support:support-v4:13.0.0 -> 19.0.1 +--- com.google.android.gms:play-services:4.0.30 (*) +--- com.hannesdorfmann:httpkit-kicker:1.0.10-SNAPSHOT | \--- com.hannesdorfmann:httpkit:1.0.10-SNAPSHOT | +--- com.jakewharton:disklrucache:2.0.2 | +--- com.fasterxml.jackson.core:jackson-databind:2.2.0 | | +--- com.fasterxml.jackson.core:jackson-annotations:2.2.0 | | \--- com.fasterxml.jackson.core:jackson-core:2.2.0 | \--- org.simpleframework:simple-xml:2.7 +--- com.jakewharton:butterknife:4.0.1 \--- com.actionbarsherlock:actionbarsherlock:4.4.0

对我来说似乎很好。

build.gradle看起来像这样:

apply plugin: 'android'

android {
    compileSdkVersion "Google Inc.:Google APIs:19"
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.google.maps.android:android-maps-utils:0.2+'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.hannesdorfmann:httpkit-kicker:1.0.12-SNAPSHOT'
    compile 'com.jakewharton:butterknife:4.0.1'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

父build.gradle只添加了我们的maven存储库 - 没有别的。

错误发生在库" httpkit"。

感谢任何帮助。

尝试:

  • 构建 - >清洁项目
  • 文件 - >无效缓存/重启
  • 删除构建文件夹
  • 如果有多个类但没有
  • ,则查看依赖项
  • 从通过maven构建的httpkit-kicker中提取构建的aar并且没有找到多个类

1 个答案:

答案 0 :(得分:0)

我认为这是最新版本工具中的错误/混淆。线索在这里:

|    \--- com.android.support:support-v4:19.0.1

|         \--- com.android.support:support-v4:13.0.0 -> 19.0.1

换句话说,正在加载Android的支持库的多个版本,这会混淆工具链。

尽量使这些一致。使用自动版本检测可能是最好的:

compile 'com.android.support:support-v4:+'

您使用的是什么版本的gradle / Android Studio?