我将android支持注释添加到我的依赖项的那一刻
compile 'com.android.support:support-annotations:20.0.0'
我收到了这个错误:
错误代码:2输出:UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dex.DexException:多个dex文件定义Landroid / support / annotation / AnimRes;在com.android.dx.merge.DexMerger.mergeClassDefs的com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)的com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) (dexMerger.java:533)位于com.android的com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)com.android.dx.merge.DexMerger.merge(DexMerger.java:188) . dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)位于com.android.dx.com上的com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) . 在com.android.dx.command.Main.main(Main.java:103)的com.android.dx.command.dexer.Main.main(Main.java:199)运行(Main.java:230)
build.gradle
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
minSdkVersion 10
targetSdkVersion 19
}
}
dependencies {
compile 'com.android.support:support-v4:19.0.0'
compile 'com.crashlytics.android:crashlytics:1.+'
compile 'com.android.support:support-annotations:20.0.0'
}
还有其他人遇到过这个问题吗?我试过了here的解决方案 .
18 回答
在我的情况下,我在根项目文件夹中的
/build/intermediates/dex-cache/cache.xml
下有一个名为cache.xml
的文件 . 我删除了这个文件,重建项目,它对我有用 .我删除了android-support-v4.jar并且它有效 .
解释 - android-support-v4.jar与我的其他人发生冲突项目\ libs文件的.jar文件**特别是在AS上运行java 8时 .
把android-support-v4.jar放在eclipse的libs文件夹中 . 清理并构建项目 . 它将解决问题 .
在构建和启动时,Android Studio中可能出现这些消息的另一个原因可能是库中应用程序标记的原因 .
如果您有几个Android库项目作为模块导入 . 进入这些项目并删除
<application> ... </application>
标签以及它们之间的所有内容 . 这些可能会导致构建过程中出现问题以及已提到的支持库问题 .来自/ platforms / android / libs / delete android-support-v4.jar . 这个对我有用 .
我设法解决了这个问题 . 原因是我将android支持库19.0.0作为依赖项包含在内,但需要19.1.0 . See here for more information
所以必须如此
如果将
AppCompat
作为库项目导入,并且在其他地方的库中也有android-support-annotations.jar
,请确保仅在AppCompat
库中导入(它已包含此注释库) . 然后删除所有android-support-annotations.jar
以避免合并此库的多个版本 .更新Android SDK工具为我修复了它,现在它只是在
android-support-v4.jar
中看到了副本 .我在使用ant时遇到了同样的问题,并且过时的
sdk.dir/tools/ant/build.xml
自动包含了注释库 .清理项目作为临时修复工作,但问题将在下一次编译错误时重新出现 .
为了更可靠地修复,我不得不将依赖更新到android
support-v4
到com.android.support:support-v4:22.2.0
.问题是
android-support-annotations.jar
曾经是一个包含android注释的独立库,但由于某种原因,这些注释已经包含在最新版本的android-support-v4.jar
文件中 .删除注释jar解决了这个问题 .
Build-> clean Project,它运作良好
我删除了android-support-v4.jar并且它有效 .
如果这是cordova /离子项目,这对我有用
将这些行添加到行号22之后的平台/ android下的build.gradle,即 apply plugin: 'android' 之后
解决了使用facebook插件的Cordova项目中的这个问题 . 我能够通过从
platforms\android\project.properties
注释掉这一行来成功构建,如图所示:并通过从
platforms\android\build.gradle
注释掉这一行,如图所示:然后做构建 . 当我安装(katzer / cordova-plugin-local-notifications)添加这些行时,问题就开始了,但是由于它添加到构建中的库已经是facebook插件构建的一部分,所以它产生了冲突 .
正如其他用户所说,排除故障的第一个要素是依赖关系 . 虽然,有时你可能会挣扎数小时而且你没有发现任何问题,所以你可以专注于构建过程 .
改变the way in which the .dex files are produced有时可以解决问题 . 您可以执行以下步骤:
打开 Build.gradle (app) 文件
搜索任务 dexOptions
将其更改为:
如果在文件中找不到任务,则可以添加它 .
对我来说,原因是新的数据绑定库
它以某种方式使用了注释lib的冲突版本,我无法强迫它
但是新的
rc3
和rc4
版本似乎已修复它,所以只需使用这些版本我有同样的问题,但我从构建文件夹中删除了构建文件
项目名称/应用程序/编译
它删除了所有相关的错误 . “无法清理项目”以及“使用$ anim”dex errow
根据您的compileSdkVersion输入 build.gradle 支持注释的依赖关系 . 例如:一个带有 compileSdkVersion 25 的项目你可以提出以下依赖:
这将解决您的问题 .