这篇文章主要介绍了完美解决android 项目jar包冲突的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
大家在做开发中竟然需要用到一些三方库 或者 需要集成三方的SDK开发包,尤其是项目特别庞大的时候,引用的三方的东西特别多,那么肯定会碰到一些jar包冲突的情况。
常见的情况有以下几种
1.项目自己引用jar包重复
2.项目中jar包和三方SDK
3.三方sdk之间都含有相同类
4.打包时候出现编译错误,出现冲突
1.项目自己引用jar包重复
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice
类似这种 v4包重复 ,直接删掉其中一个包就可以了。
2.项目中jar包和三方SDK
这其实有两种情况
1) 将一些三方的框架源码引用到项目中了比如 GSON ,Vollery这些,我们将里面的一些文件重写了,引用的是源码,这个和我们引用的三方库里面的冲突了 。
这种情况,我们可以将三方库设置为私有 provided,如果还是有冲突我们可以将
2) 直接导入的jar包 或者 gradle中配置的依赖 和项目中原有的一些jar包出现冲突。
3.三方sdk之间都含有相同类
比如你集成了友盟的sdk,又集成了支付的sdk,还集成了一些其他的sdk。这些sdk之间会有一些冲突。
4.打包时候出现编译错误,出现冲突
这种情况是正常手机调试运行没有问题,但是一打正式包就报错,冲突。
说了这么多,这些碰到这种项目中有冲突,或者有重复文件的情况我们如何解决呢?
一般常用的解决办法
1.双击shift 可以调出搜索 这个搜索是全局含jar搜索,可以快速定位到你搜索的东西存在哪个包下。
2.找到后 按上面讲的,解决也有几种情况
1)如果是两个相同的jar ,直接删掉一个
2)如果不同的jar有相同的引用 用exclude解决,大概意思就是去掉 你不需要的类
3)打包出现的错误冲突等,我们可以找到 ,或者删除,或者修改,引入的方式可以修改为provided
这种方式只提供编译支持,但是不会写入apk。使用provide可以避免支持包版本冲突和重复打包导致安装包体积徒增。
以上这篇完美解决android 项目jar包冲突的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程学习网。
本文标题为:完美解决android 项目jar包冲突的问题
- Flutter实现底部和顶部导航栏 2022-08-31
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android实现监听音量的变化 2023-03-30
- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android实现轮询的三种方式 2023-02-17
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android studio实现动态背景页面 2023-05-23
