美文网首页
Gradle解决多lib冲突

Gradle解决多lib冲突

作者: None_Ling | 来源:发表于2018-09-11 14:37 被阅读57次

    背景

    在引入第三方jar包的时候,可能会遇到很多库的冲突,例如均使用了OkHttp,RxJava等等,在打包的时候就会遇到Class多个定义的问题。而目前Android中均是用AAR进行dex以及资源的打包,无法通过源码再进行剥离

    解决方案

    在Gradle中,通过compile "io.reactivex:rxjava:1.2.3"的方式将已经定义好的Maven仓库中的资源下载并且编译到项目中。

    然后通过exclude的方式,在编译的时候,将对应包名/模块名下面的class不打包。

    实例

    比如RxJava编译过后的包结构如下图:


    RxJava

    而如果使用以下语句的话,则会将rx.internal.observers包下的class不打入Dex中,通过这种方式,就可以解决多class冲突的问题

    compile "io.reactivex:rxjava:1.2.3"{
            exclude group: 'rx.internal',module:'observers' 
        }
    

    追踪

    在项目的build目录下面可以看到编译完成的classes信息用于验证exclude是否生效

    build目录

    相关文章

      网友评论

          本文标题:Gradle解决多lib冲突

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