SDK构建工具更新到23.1 rc1后出现意外的顶级异常

时间:2015-10-11 12:52:11

标签: android gradle android-gradle android-support-library build.gradle

SDK构建工具更新到23.1 rc1

后出错

错误信息是:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
    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)
....

Gradle版本是1.3.0。 我曾在项目的gradle文件中添加此配置脚本(在buildscript块中)。

 configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
    }

这是我的模块的gradle脚本

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
    applicationId "com.example.android"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 8
    versionName "08.00.00"
}


buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

sourceSets {
    main.jniLibs.srcDirs = ['libs']
    test.jniLibs.srcDirs = ['libs']
}
}
repositories {
    mavenCentral()
}
dependencies {
    compile 'com.google.code.gson:gson:2.3'
    compile 'com.android.support:gridlayout-v7:23.0.1'
    compile 'com.google.android.gms:play-services-gcm:8.1.0
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile 'ch.acra:acra:4.7.0-RC.1'
    compile 'com.facebook.android:facebook-android-sdk:4.1.0'
    compile 'com.github.shell-software:fab:1.0.5'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.wu-man:android-oauth-client:0.0.3'

    compile files('libs/disklrucache-2.0.2.jar')
    compile files('libs/spring-android-rest-template-2.0.0.M1.jar')
    compile files('libs/volley.jar')
    compile files('libs/zbar.jar')
}

我知道这个关于support-v4库的版本冲突的错误消息,但我无法解决这个问题。你有什么建议吗? 我尝试在"无效缓存/重启",多次清理项目后构建。

1 个答案:

答案 0 :(得分:1)

当您使用相同库不同版本时会发生此问题。

运行gradle -q dependencies以检查依赖关系报告。

在你的情况下,你会看到

compile 'com.wu-man:android-oauth-client:0.0.3'

有很旧的依赖关系
<dependency>
  <groupId>com.google.android</groupId>
  <artifactId>support-v4</artifactId>
  <version>r7</version>
  <scope>compile</scope>
</dependency>

您可以检查pom文件here

com.google.android:support-v4:r7 与您从脚本中排除的com.android.support:support-v4不同

您可以使用同一个库的更新版本(例如0.4.5),也可以排除

compile('com.wu-man:android-oauth-client:0.0.3') {
      exclude module: 'support-v4'
    }

否则,您可以使用以下命令更新脚本:

configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group: 'com.google.android', module: 'support-v4'
    }