android关于jar包重复、jar包类重复问题的解决

您所在的位置:网站首页 android的libraries部分 android关于jar包重复、jar包类重复问题的解决

android关于jar包重复、jar包类重复问题的解决

2023-07-25 19:52| 来源: 网络整理| 查看: 265

经常的,在android 开发中,项目普遍的喜欢引入大量的第三方库,在完成项目功能需求的同时,也可以减少自己项目的代码量。何乐而不为。

常用的引入第三方库大致可以分为两种方式,1、以jar包,aar包、放在libs、jniLibs目录下,或者以library Module的形式放置在工程目录下。2、以Gradle依赖的远程依赖的形式下载引入。

因此复杂的依赖关系容易产生重复导入jar包,重复引用jar包类的问题。对此,也有响应的几个方法进行处理。

jar包重复导入

主要有本地 Jar 包重复嵌入和== Gradle 远程重复依赖==。

第一种,比较好理解。比如 app module 与 library module 各自 libs 目录中嵌入了相同的 Jar 包。这种情况也比较好解决,只需要将 app module 下的重复 jar 包删除即可。

第二种,稍微复杂一点。比如对于 Gradle 远程依赖的两个第三方库,他们内部同时依赖相同的另一个辅助第三方库。这个时候我们就没办法像第 一种情况那样手动删除本地文件。好在 Gradle 插件提供了相应的解决方案,即使用 exclude 语法,如:

implementation.yifeng.example:example-1:1.0' implementation('com.yifeng.example:example-2:1.0') { exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'design'//当需要剔除多个jar包的时候,可以使用多条exclude语句 } jar包类重复

所谓的jar包类重复就是依赖的第三方库中有从重复的包名、类名。导致程序加载的时候异常。

先来看一个我最近遇到的问题: 在这里插入图片描述 这句话是需要理解的:

java.lang.RuntimeException: Duplicate class com.android.volley.AuthFailureError found in modules library-1.0.19.jar (com.mcxiaoke.volley:library:1.0.19) and volley.jar (volley.jar)

大致意思就是:==AuthFailureError ==这个类,在library-1.0.19.jar以及volley.jar 里面都存在。

因此找出重复的这两个jar 包 在这里插入图片描述

如果是这两个Jar包是本地的,解压jar包文件进行修改即可。我这里简单说一下如何修改本地jar包的代码。

步骤: 1、下载一款jar包阅读器,jd-gui 2、使用解压软件将jar包解压,然后就可以直接编辑文本内容了。删除重复的类就行。

3、再把解压出来的的文件重新压缩为zip格式的压缩包。在将文件名重新改为.jar后缀就行。

4、然后重新导入项目就行。

如果两个都是远程的第三方sdk出现重复,可以联系提供SDK的工作人员,通过修改源码重新打一个jar包。

或者使用jarjar.jar软件,重命名包名和文件名,可以去github上找源码。(没有尝试过,就不板门弄斧了)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3