Gradle解决多lib冲突

背景

在引入第三方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目录

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏潇涧技术专栏

Using Git with multiple Public Keys

很多时候,如果我们在多个网站有了Git账号,例如Github、GitCafe、CodingNet等,当我们与不同网站的代码库进行连接的时候可能会因为我们没有配置...

792
来自专栏Laoqi's Linux运维专列

linux安全配置

今天清早登录服务器发现很多暴力狗(使用ssh端口破解登录密码),真不知道这些人有啥意思,破解了无非是把我的服务器当作肉鸡再去攻击其他服务器,目的无非就是证明你有...

4635
来自专栏Java学习123

myeclipse10.7破解成功 但 无法打war包

3268
来自专栏清风

Linux 登陆日志替换、清理方法 原

1053
来自专栏运维一切

sentry部署整理 原

sentry是python开发的一个应用,使用python uWSG框架运行,所有安装完sentry要记得在nginx的代理上禁用掉/admin路径,不然uws...

2081
来自专栏云计算教程系列

如何使用Python-GnuPG和Python 3验证代码和加密数据

GnuPG包提供用于生成和存储加密密钥的完整解决方案。它还允许您加密和签名数据和通信。

6508
来自专栏cmazxiaoma的架构师之路

MyEclipse使用Git进行Push to Upstream报错 学习笔记

962
来自专栏緣來來來

申请Let's Encrypt通配符证书

Let's Encrypt支持通配符证书了,也就是说你只需要为你的网站申请*.example.com这样一个证书,所有的子域名都可以支持,下面介绍下申请方法:

4712
来自专栏IT笔记

2017年最新javaweb整合银联在线支付DEMO

2017年最新银联在线支付DEMO,成功运行 。 本项目可直接导入eclipse运行,内包含最新文档 ,详情请阅读readme.tx,截止日期2015-09-0...

4434
来自专栏龙首琴剑庐

Tomcat6/7应用服务器-禁用RC4等弱密码套件

最近更新了新版浏览器的同学是不是偶尔会遇到SSL加密协议不灵,访问不了的情况? 最典型的例子是使用FF39+访问某些网站时报错:Error code: ssl...

4165

扫码关注云+社区

领取腾讯云代金券