android关于jar包重复、jar包类重复问题的解决 |
您所在的位置:网站首页 › android的libraries部分 › android关于jar包重复、jar包类重复问题的解决 |
经常的,在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包类重复就是依赖的第三方库中有从重复的包名、类名。导致程序加载的时候异常。 先来看一个我最近遇到的问题: 大致意思就是:==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 |