美文网首页
Android Studio Jar包冲突总结

Android Studio Jar包冲突总结

作者: code豆腐 | 来源:发表于2017-05-12 16:20 被阅读0次

    在集成环信聊天SDK的时候,真是遇到了好多坑啊,真是白了少年头,而Jar包冲突相信很多人都遇到过吧,

    首先你必须熟悉几个AndroidStudio导包的方式和特点:

    方式1:直接引用下载网络jar包

    compile ‘com.Android.support:support-v4:23.3.0’

    方式2:引用libs下所有jar包(最好不要用,自己一个一个引入比较好)

    compile fileTree(dir: ‘libs’, include: [‘*.jar’])

    方式3:引用一个jar

    compile files(‘libs/fastjson-1.1.53.android.jar’)

    方式4:引用一个aar文件,注意并不能像 方式2 那样自动引用全部的aar,而需要对每个aar分别进行引用。

    compile(name:‘aar_file_name’, ext: ‘aar’)

    方式5:引用库类型的项目

    compile project(‘:xxxsdk’)

    方式6:仅仅在编译时使用,但最终不会被编译到apk或aar里

    providedfiles(‘libs/glide-3.7.0.jar’)

    查看一下报错的信息,大部分jar包冲突报错信息如下:

    Android Studio:Multiple dexfilesdefine Landroid/support/annotation/AnimRes

    大部分人报错原因为:

    1: app/libs下有两个两个相同的jar包或者dependencies{}里面compile了两个相同库

    2:项目引入v4包和v7包,因为v7包里面包含了v4包,所以导致冲突,这个可以用以下方法解决:

    compile('com.android.support:appcompat-v7:23.3.0') {            excludemodule: 'support-v4'}

    默认情况下v7中是包含V4包的,exclude 的意思就是从v7包中去除v4包这样就可以解决冲突

    3: 例如引入的module中有v4包,然后主module又有v4包,如果你不想删除任何一个v4包,或者其他情况不能把其中的一jar包删除,这时候就要注意到注意compile 和 provided 的区别了:

    compile :jar包/依赖代码 在编译的时候需要依赖,在运行的时候也需要

    provided : jar包/依赖代码 仅在编译的时候需要,但是在运行时不需要依赖

    也就是说,你只要吧其中任意一个改为provided就可以了

    注意没效果的可以多clean,rebuild一下,或者删除build目录

    网上还有几个处理不同情况jar包冲突的方法,如:

    在 allprojects{}里面配置

    configurations {all*.excludegroup:'com.android.support', module:'support-v4'all*.excludegroup:'com.android.support', module:'support-annotations'}

    表示在jar包里面如果有包含 v4包或者annotations包,则从包中去除(这种方法我的没解决)

    jar包冲突情况基本就这样子了,基本上能解决今后遇到的冲突问题了把,妈妈再也不用担心我的jar包冲突问题了

    相关文章

      网友评论

          本文标题: Android Studio Jar包冲突总结

          本文链接:https://www.haomeiwen.com/subject/kdttxxtx.html