android - com.android.dex.DexException : Multiple dex files define Landroid/support/annotation/AnimRes;

标签 android android-studio android-gradle-plugin build.gradle

您好,我正在使用 Android Studio 开发一个项目。我已经设置了所有内容,但是当我运行我的项目时,我遇到了以下错误。最近两天我无法解决它。我的项目中可能是什么问题导致了这个错误

请知道的 friend 帮忙

应用构建.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "in.xyz"
        minSdkVersion 15
        targetSdkVersion 22
        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:22.0.+'
    //compile files('libs/android-support-v4.jar')
    compile 'com.android.support:support-v4:22.0.+'
    compile 'com.android.support:support-annotations:20.0.0'
}

库build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
    }

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

dependencies {
    //compile files('libs/android-support-v4.jar')
    compile 'com.android.support:support-v4:22.0.+'
    compile 'com.android.support:support-annotations:20.0.0'
}

构建.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

...

UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
        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)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)
    Error:Execution failed for task ': app:dexDebug'.

设置.gradle

include ':app'
include ':multiStateToggleButton'

最佳答案

我认为你的问题是,无论你将库链接到你的主项目,你的支持库和注释都具有相同的依赖关系。

如果您在应用程序中将库项目作为依赖项,则只需将依赖项放置在库依赖项闭包中即可。

问题是您有两个 dex 文件,因为有两个文件具有相同的名称,因为文件与您的依赖项重叠。

首先将您的模块复制到主项目的 libs/文件夹中,然后,

在主项目的根目录下创建你的 settings.gradle 文件:

include 'app_name', 'library_name'
project(':LibraryNameGoesHere').projectDir = new File('libs/LibraryNameGoesHere')

对于你的库的 build.gradle

dependencies {
    compile files('libs/android-support-v4.jar')
    compile 'com.android.support:support-v4:22.0.+'
    compile 'com.android.support:support-annotations:20.0.0'
}

然后为你的主项目build.gradle

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.android.support:appcompat-v7:22.0.+'
     compile project(":libs:LibraryNameGoesHere")
}

关于android - com.android.dex.DexException : Multiple dex files define Landroid/support/annotation/AnimRes;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628067/

相关文章:

java - 将 TCP 套接字连接到主机名时捕获超时异常

java - Android Studio 无法在 OpenSUSE 上启动(打开的文件太多)

android - 如何在android中的工具栏添加 Action 搜索图标

java - 使用语音命令搜索

android - Android Studio无法同步Gradle项目

java - 将字符串 ["string"] 转换为字符串数组

android + 共享首选项

javascript - 如何在 Android 上的 WebView 中允许 HTTP 连接(不是 HTTPS)?

android - ConsumerProguardFiles 与 ProguardFiles

android - 无法找到方法 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'