项目需要使用 im, 在项目里导入了腾讯 im 的几个 module 依赖, 项目无法编译, 报错 unable to merge dex
网上搜索一番后发现解决方案大致分以下几种:
先 clean 再 rebuild, 删除. gradle 文件夹 clean rebuild....
降低 play-service 版本, 腾讯 IM demo 中用的 play-serivce 是 3.0 的, 估计已经够低了 :)
依赖冲突导致
试了前两种方案没有解决我的问题, 我的项目是近期创建的, 腾讯 IM demo 的 gradle 插件版本是 2.3.3, gradle 版本 3.3, 我的项目 gradle 插件版本 3.0.1, gradle 版本 4.1
使用
./gradlew dependencies
, 检查依赖, 发现多处传递依赖, 几个库 module 中 compile sdk 版本有的是 22, 有的是 23, 因此使用的 support 包版本也不相同, 导致依赖版本冲突
使用 gradle3 新增函数 implementation 替换库 module 中的 compile 函数, implementation 导入的依赖只会在 module 内部引用而不会传递, 问题解决.
来源: https://www.cnblogs.com/fortitude/p/8570960.html