美文网首页
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