Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes

最近真的比较忙,一不小心博客又荒了两个月。从今天起,决定重返csdn,多多纪录和分享。先从一个最近被折磨的死去活来的问题。

由于升级了V4包,就一直报这个问题:

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

每次都要clean一下,然后才能编译过,光这个过程就浪费了4/5分钟。出现这个问题是因为最新的v4包(compile ‘com.android.support:support-v4:22.2.1’)已经包含了annotation.jar这个包,但其他jar包里也包含这个包造成的。而非同时包含了v4/V7造成的,所以一堆人说在v7包里进行如下设置:

compile (‘com.android.support:appcompat-v7:22.2.1‘){
        exclude group: "com.android.support", module: "support-v4"
    }

即设置v7包不包含v4,这个设了也是没用的。只要确保用v4和v7 的地方版本一致即可。正确的解决方法有如下几种:

1,找到项目其他的依赖包,一定在libs里的某个jar包里,隐藏着annotation.jar包,将其删掉就ok了,此为最正统的解决方法;

2,降级v4包,因为高版本的v4才包含annotation.jar,可以在最外面的build.grable里强制设置:

allprojects {
    repositories {
        jcenter()
    }
    configurations.all {
        resolutionStrategy.force ‘com.android.support:support-annotations:22.1.0‘
    }
}

3,在需要v4包的地方exclude掉annotation包,注意compile要多加个括号:

 compile (‘com.android.support:support-v4:22.2.1‘){
        exclude module: ‘support-annotations‘
    }

缺点是每个用v4包的地方都要这么设置下。

4,在application的build.gradle里的dexOptions设置里增加一句:preDexLibraries = false就ok了:

PS:以上四种方法都可以解决问题,推荐正统的方法1和偷懒的方法4。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 21:20:51

Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes的相关文章

运行出现 Multiple dex files define Landroid/support/annotation/AnimRes 解决方法

1. 拷贝google-play-services_lib/libs/目录下的android-support-v4.jar到xxxr/libs/下 2. 工程进行如下设置:

Android 多个DEX错误 Multiple dex files define Landroid/support/v7/app/ActionBar$DisplayOptions;

今天在写程序的时候我的Android Studio 突然编译错误(错误提示如下:)后来经过我的几番折腾发现每一次都要先Clear Project一下然后再Build就可以了,如果你第二次再Build的时候就报错.后来我就找到了最强的老师(Google)尝试解决!可惜很遗憾,我在Google上看到的都是Eclipse上的解决方法.并没有找到我想要的答案,难道要我每一次在Build的时候都要先Clear Project吗?最后又经过我的几番折腾我发现在Project Structure--->app

Android中的 Multiple dex files define 编译错误引发的思考

昨天我龙哥问我一个问题,他说如果一个工程中,有一个com.x.A枚举,导入的第三方jar中也有一个com.x.A枚举,那么我在工程中用A枚举的时候,会用到那个枚举呢?我当时一想,这个不是类(枚举是个特殊类)定义冲突吗?应该在编译的时候就报错呢,而且这个问题我之前遇到过,所以我很自信的和他说,这个应该在编译的时候就报错,结果他来了一句:没有呀?运行成功了,而且导入的是工程中的那个枚举A,我擦,我一想这不是打我脸吗?我记得非常清楚,是会报错的呀,所以我就自己写了一个AndroidDemo工程: 工程

用Eclipse运行Android版APP(PhoneGap)时出现:Unable to execute dex: Multiple dex files define

这两天遇到点小问题,做个记录: 症状:运行,调试时都报:Unable to execute dex: Multiple dex files define错误,发布后的APP安装到手机后一运行,就提示:“程序名 已停止”: 解决方法: 1.项目->properties->java build path->order and export ->去掉:android 4.3.1和android-support-v4.jar的选择: 2.项目->properties->java

eclipse:运行 Android 项目时出现 “Unable to execute dex: Multiple dex files define” 解决方法

android 项目在eclipse 出现Unable to execute dex: Multiple dex files define Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define 的原因主要是因为jar包重复导入造成的冲突 这个项目我使用了swipebacklayout的library,library里面已经导入了v7的jar包,项目工程里也有个v7包,解决方法就是将

Android "multiple dex files define" 错误

在Android开发中经常看到这个错误,产生的原因还是挺值得研究的. 如果是在eclipse上出现的这个问题,基本上可以判断为同一工程中存在相同的jar包,或者是不同的jar包,但是他们之间有相同的类,所以解决办法就是干掉对方. 在eclipse中如果删除jar之后还报错的话,可能是eclipse的缓存导致的,重启eclipse基本可以解决这个问题. 但是如果事情发生在 Android Studio 上,那么就复杂了.首先要排除eclipse中的那种情况,如果问题还没有解决那就要仔细了. 如果工

[Android学习笔记]Unable to execute dex Multiple dex files define:xxxx 问题

不同情况可能会出现这个问题,我遇到的问题是: 引入的多个jar包中,其中可能是第三方的SDK,但是其中可能使用了比较流行的开源框架,此时你项目中就有两套包名一样的代码,编译没问题,部署到手机之后就报如上错误 解决办法是: 把第三方jar包包含的开源代码删掉即可 比如: 项目中使用了android-async-http.jar , 同时引入 xxxxx.sdk.jar , 而由于xxxxx.sdk.jar中也引入了android-async-http.jar所以出现以上错误 解决步骤: 1.修改x

Android Unable to execute dex: Multiple dex files define异常解决

问题: [2015-07-13 16:08:25 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/loopj/android/http/AsyncHttpClient$1; [2015-07-13 16:08:25 - AhStu] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom

Android中Unable to execute dex: Multiple dex files define Lcom/viewpagerindicator/CirclePageIndicat

在Android开发工作中经常遇到很多奇怪的异常,解决起来会花很长的时间.下面首先来介绍一下Android中有关Jar包的知识. 1.Jar包的含义: Jar包里边封装了很多的类和方法.在开发过程中经常会用到各种各样的Jar包来实现一些功能. 2.Jar包的作用: 将重用的代码打包成一个Jar包,供所有的需要的项目使用.解决了代码复用的问题. 但是Jar包中不包括大量的资源:图片.音乐文件甚至界面布局. 有关布局的资源文件不能打包成Jar包.为了解决这个问题,新建一个Android项目,标记为库