com.android.dex.DexException:多个dex文件定义Landroid/support/annotation/AnimRes;
com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
您好,我正在使用 Android Studio 进行一个项目。我已经设置了所有内容,但是当我 运行 我的项目时,我遇到了以下错误。最近两天我无法解决它。我的项目中可能是什么问题导致了这个错误
请知道的朋友帮忙
应用build.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'
}
build.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'.
settings.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")
}
自从 facebook sdk 配置为使用 Android 2.3.3,它需要注释库。
我的应用程序配置为使用 Anndoid > 4.x.x,其中包含注释,冲突已消除。
我已经在 facebbok mainfest 中更改为使用 Android > 4.x.x 并解决了问题。
如果你将项目从 eclipse 迁移到 studio ,然后你的项目需要一个新模块,你添加 build.gradle 在模块中,像这样添加依赖项,
compile 'com.android.support:support-annotations:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
//recyclerview
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
你可能会看到这个愚蠢的问题,因为旧项目包含像 android-support-v4.jar 这样的 jar 文件
这个狗屎覆盖了编译(东西)所以你必须删除 *.jar 文件,
这个狗屎让我度过了一个下午,祝你好运,我的英语是台球,
请给我留言
在使用 Android Studio 从 Eclipse 导入项目后,我得到了这个错误,这是值得的。在 /app/build.gradle 文件中,我在依赖项部分有两个条目,看起来像这样
dependencies {
compile files('libs/android-support-v13.jar')
compile files('libs/android-support-v4.jar')
}
我删除了对 v4 的引用,如下所示
dependencies {
compile files('libs/android-support-v13.jar')
}
我清理了项目并能够构建我的 APK。我不知道这是否是修复它的正确方法,但它对我有用。
您好,我正在使用 Android Studio 进行一个项目。我已经设置了所有内容,但是当我 运行 我的项目时,我遇到了以下错误。最近两天我无法解决它。我的项目中可能是什么问题导致了这个错误
请知道的朋友帮忙
应用build.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'
}
build.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'.
settings.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")
}
自从 facebook sdk 配置为使用 Android 2.3.3,它需要注释库。 我的应用程序配置为使用 Anndoid > 4.x.x,其中包含注释,冲突已消除。 我已经在 facebbok mainfest 中更改为使用 Android > 4.x.x 并解决了问题。
如果你将项目从 eclipse 迁移到 studio ,然后你的项目需要一个新模块,你添加 build.gradle 在模块中,像这样添加依赖项,
compile 'com.android.support:support-annotations:24.1.1'
compile 'com.android.support:support-v4:24.1.1'
//recyclerview
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'
你可能会看到这个愚蠢的问题,因为旧项目包含像 android-support-v4.jar 这样的 jar 文件 这个狗屎覆盖了编译(东西)所以你必须删除 *.jar 文件, 这个狗屎让我度过了一个下午,祝你好运,我的英语是台球, 请给我留言
在使用 Android Studio 从 Eclipse 导入项目后,我得到了这个错误,这是值得的。在 /app/build.gradle 文件中,我在依赖项部分有两个条目,看起来像这样
dependencies {
compile files('libs/android-support-v13.jar')
compile files('libs/android-support-v4.jar')
}
我删除了对 v4 的引用,如下所示
dependencies {
compile files('libs/android-support-v13.jar')
}
我清理了项目并能够构建我的 APK。我不知道这是否是修复它的正确方法,但它对我有用。