意外 TOP_LEVEL 异常多个 dex 文件定义 Landroid/support/annotation/AnimRes
UNEXPECTED TOP_LEVEL EXCEPTION Multiple dex files define Landroid/support/annotation/AnimRes
将新库添加到我的项目后,我开始收到此错误:
Error:Execution failed for task ':app:dexDebug'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
D:\Android\sdk\build-tools.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
Error Code:
2
Output:
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)
我在 Whosebug 上浏览了大量类似的问题,但没有找到可行的解决方案。
下面是我的项目结构和库项目的 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"
}
}
}
这是应用程序文件夹中的 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(或者至少我是这么认为的),但是我读到这个错误可能会发生,因为在一个项目中使用了同一个库的不同版本。
你能帮我解决这个问题吗?
当您使用同一个库的两个不同版本时,就会发生这种情况。
您可以使用命令 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'
}
将新库添加到我的项目后,我开始收到此错误:
Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.internal.LoggedErrorException: Failed to run command: D:\Android\sdk\build-tools.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 Error Code: 2 Output: 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)
我在 Whosebug 上浏览了大量类似的问题,但没有找到可行的解决方案。
下面是我的项目结构和库项目的 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"
}
}
}
这是应用程序文件夹中的 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(或者至少我是这么认为的),但是我读到这个错误可能会发生,因为在一个项目中使用了同一个库的不同版本。
你能帮我解决这个问题吗?
当您使用同一个库的两个不同版本时,就会发生这种情况。
您可以使用命令 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'
}