【问题标题】:UNEXPECTED TOP_LEVEL EXCEPTION Multiple dex files define Landroid/support/annotation/AnimResUNEXPECTED TOP_LEVEL EXCEPTION 多个 dex 文件定义 Landroid/support/annotation/AnimRes
【发布时间】:2015-08-26 07:09:21
【问题描述】:

将新库添加到我的项目后,我开始收到此错误:

错误:任务 ':app:dexDebug' 执行失败。 com.android.ide.common.internal.LoggedErrorException:无法运行命令: D:\Android\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output D:\Android\AndroidStudioProjects\Discounty\app\build\intermediates\dex\debug --input -list=D:\Android\AndroidStudioProjects\Discounty\app\build\intermediates\tmp\dex\debug\inputList.txt 错误代码: 2 输出: 意外的顶级异常: com.android.dex.DexException:多个dex文件定义了Landroid/support/annotation/AnimRes; 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 在 com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) 在 com.android.dx.command.dexer.Main.run(Main.java:246) 在 com.android.dx.command.dexer.Main.main(Main.java:215) 在 com.android.dx.command.Main.main(Main.java:106)

我查看了大量关于 stackoverflow 的类似问题,但没有找到有效的解决方案。

下面是我的项目结构和库项目的 build.gradle 文件(在 libs 文件夹中)的屏幕截图,here's the link for the screenshot

这是我的根 build.gradle 文件:

buildscript {
    repositories {
        jcenter()
        maven {
            url "https://jitpack.io"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://jitpack.io"
        }
    }
}

这是 app 文件夹中的 build.grandle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.discounty.discounty"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'cn.pedant.sweetalert:library:1.3'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.getbase:floatingactionbutton:1.6.0'
    compile 'com.yalantis:contextmenu:1.0.0'
    compile('de.keyboardsurfer.android.widget:crouton:1.8.4@aar') {
        exclude group: 'com.google.android', module: 'support-v4'
    }
    compile project('libs:swipe_menu_list_view')
}

我尝试清理项目,但没有帮助。

我添加的新库 (swipe_menu_list_view) 包含 support-v4 依赖项,并且我在项目的其他任何地方都没有使用 support-v4(或者至少我认为如此),但我已经读过这个可能会发生错误,因为在一个项目中使用了同一库的不同版本。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: java android android-support-library android-library dex


    【解决方案1】:

    当您使用同一库的 2 个不同版本时会发生这种情况。

    你可以使用命令gradle dependencies渲染依赖树

    在你的情况下:

    'com.getbase:floatingactionbutton:1.6.0' 使用

        <dependency>
              <groupId>com.android.support</groupId>
              <artifactId>support-annotations</artifactId>
              <version>19.1.0</version>
        </dependency>
    

    当你 appcompat 21.0.3 使用时

    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-annotations</artifactId>
      <version>21.0.3</version>
      <scope>compile</scope>
    </dependency>
    

    您可以检查是否有使用相同 21.0.3 的更新版本,或者您可以排除依赖项:

    compile('com.getbase:floatingactionbutton:1.6.0') {
            exclude group: 'com.android.support', module: 'support-annotations'
        }
    

    【讨论】:

    • 你能告诉我我该怎么处理这个吗?我的意思是我试图在我的floatingactionbutton 库中更改support-annotations v21.0.3,但这根本没有帮助。所以,你能帮我解决我的问题吗,因为我真的不知道该怎么办?
    • 尝试排除此依赖项或检查更新版本。答案已更新
    • 我尝试添加您使用 v1.6.0 提供的代码,然后使用 v.1.9.1(最新版本的 fab 库)添加代码,但这不起作用;(然后我尝试运行 clean&build命令,之后也尝试了invalidate caches/restart,但我仍然遇到同样的错误。你能告诉我还能做什么吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-06
    • 2016-04-23
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2014-06-10
    相关资源
    最近更新 更多