Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
2016-05-04 13:44
615 查看
最近真的比较忙,一不小心博客又荒了两个月。从今天起,决定重返csdn,多多纪录和分享。先从一个最近被折磨的死去活来的问题。
由于升级了V4包,就一直报这个问题:
每次都要clean一下,然后才能编译过,光这个过程就浪费了4/5分钟。出现这个问题是因为最新的v4包(compile ‘com.Android.support:support-v4:22.2.1’)已经包含了annotation.jar这个包,但其他jar包里也包含这个包造成的。而非同时包含了v4/V7造成的,所以一堆人说在v7包里进行如下设置:
即设置v7包不包含v4,这个设了也是没用的。只要确保用v4和v7 的地方版本一致即可。正确的解决方法有如下几种:
1,找到项目其他的依赖包,一定在libs里的某个jar包里,隐藏着annotation.jar包,将其删掉就ok了,此为最正统的解决方法;
2,降级v4包,因为高版本的v4才包含annotation.jar,可以在最外面的build.grable里强制设置:
3,在需要v4包的地方exclude掉annotation包,注意compile要多加个括号:
缺点是每个用v4包的地方都要这么设置下。
4,在application的build.gradle里的dexOptions设置里增加一句:preDexLibraries = false就ok了:
PS:以上四种方法都可以解决问题,推荐正统的方法1和偷懒的方法4。
原帖地址:http://blog.csdn.net/yanzi1225627/article/details/47361375
如果知道是哪几个包冲突:
本人使用的方法(推荐):
由于升级了V4包,就一直报这个问题:
<code class="hljs http has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-attribute" style="box-sizing: border-box;">com.android.dex.DexException</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">Multiple dex files define Landroid/support/annotation/AnimRes;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
每次都要clean一下,然后才能编译过,光这个过程就浪费了4/5分钟。出现这个问题是因为最新的v4包(compile ‘com.Android.support:support-v4:22.2.1’)已经包含了annotation.jar这个包,但其他jar包里也包含这个包造成的。而非同时包含了v4/V7造成的,所以一堆人说在v7包里进行如下设置:
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">compile (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:appcompat-v7:22.2.1'</span>){ exclude <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">group</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support"</span>, module: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"support-v4"</span> }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
即设置v7包不包含v4,这个设了也是没用的。只要确保用v4和v7 的地方版本一致即可。正确的解决方法有如下几种:
1,找到项目其他的依赖包,一定在libs里的某个jar包里,隐藏着annotation.jar包,将其删掉就ok了,此为最正统的解决方法;
2,降级v4包,因为高版本的v4才包含annotation.jar,可以在最外面的build.grable里强制设置:
<code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">allprojects <span class="hljs-cell" style="box-sizing: border-box;">{ repositories { jcenter() }</span> <span class="hljs-transposed_variable" style="box-sizing: border-box;">configurations.</span>all <span class="hljs-cell" style="box-sizing: border-box;">{ resolutionStrategy.force <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:support-annotations:22.1.0'</span> }</span> }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>
3,在需要v4包的地方exclude掉annotation包,注意compile要多加个括号:
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> compile (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:support-v4:22.2.1'</span>){ exclude <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">module</span>: '<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>-<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">annotations</span>'</span> }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
缺点是每个用v4包的地方都要这么设置下。
4,在application的build.gradle里的dexOptions设置里增加一句:preDexLibraries = false就ok了:
PS:以上四种方法都可以解决问题,推荐正统的方法1和偷懒的方法4。
原帖地址:http://blog.csdn.net/yanzi1225627/article/details/47361375
如果知道是哪几个包冲突:
configurations.all { resolutionStrategy { force group: 'com.android.support', name: 'support-v4', version: '23.1.0' force group: 'com.android.support', name: 'appcompat-v7', version: '23.1.0' force group: 'com.android.support', name: 'support-annotations', version: '23.1.0' } }
本人使用的方法(推荐):
configurations { all*.exclude group: 'com.android.support', module: 'support-v4' }
相关文章推荐
- android解压缩assets里面的压缩文件到sdcard里面
- android SDK、ADT、API之间的关系
- java/android计算明天,今天,昨天,后天
- Android中Bitmap,byte[],Drawable,InputStream相互转化工具类
- Android TextView属性详解
- android 倒计时
- Android 自定义View背景动画 流程简读 <2>
- Android下拉控件(Spinner)的基础使用
- Android中自定义View、ViewGroup理论基础详解
- android 有关毫秒转时间的方法,及时间间隔等
- 如何轻松 查看Java API ,以及Android API源码(免去翻墙的痛苦)
- Android 和 windows 双系统,时间不一致的解决方法
- Android 实现复制到系统剪贴板 TextView 实现单行输入,禁止换行,多出来的显示省略号
- Android事件分发机制完全解析(终极版)
- Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发
- AndroidStudio导入Github下载的项目问题
- Android屏幕适配攻略
- android4.0 FragmentTabHost tabs在底部 仿qq界面
- Android官方开发文档Training系列课程中文版:打印内容之自定义文档打印
- Android版本和 sdk版本(即API版本)的区别