zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    SCAU 9504 面试
    SCAU 9503 懒人选座位
    SCAU 8628 相亲
    SCAU 10691 ACM 光环
    SCAU 8626 原子量计数
    SCAU 10674 等差对
    HDU ACM 1048 The Hardest Problem Ever (水题)
    SCAU 9502 ARDF
    SCAU 10686 DeathGod不知道的事情
    SCAU 8629 热身游戏(高精度)
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7133814.html
Copyright © 2011-2022 走看看