今天项目中集成第三方的 aar 与 另外一个jar中的 类重复了 导致不能生成apk,如果是依赖的第三方就用exclude 排除的方式,如下:

运行 如下命令可以查看依赖

 ./gradlew :app:dependencies 

再输入您要排除的依赖包如下

implementation('com.google.android.material:material:1.2.1') {
        exclude group: 'androidx.cardview', module: 'cardview'
}
但我这里不是依赖的第三方,是包里面包含了重复的类,这里我用了jarjar工具来打包,工具下载地址:

https://code.google.com/archive/p/jarjar/downloads

下载完成后用jar 命令来运行该工具

java –jar jarjar.jar strings jar包地址
查看当前jar包中所有的类信息



jarjar的命令说明如下:

java -jar jarjar.jar process <rulesFile> <inJar> <outJar>

这里面有一个重要的东西是rulesFile,就是定义一个替换规则。injar就是指要替换的jar包,outjar就是替换完要输出的jar包,rulesFile直接用.txt文档写就行,

rulesFile有三种指令,分別如下:
1. rule用来取代Package的名称。

rule pattern result
2.zap用来移除符合名称的Package。

zap pattern
3.keep只会保留符合的Package的名称,其他的则会刪除。如果和zap一起使用,将会在zap执行完之后才执行。

keep pattern
那这里我要删除的包是:

zap com.hoho.android.usbserial.**
并保存一个txt文件。

java -jar /路径/Downloads/jarjar-1.4.jar process /规则路径/rule.txt /原路径/libs/plsyreadersdk.jar /新输出路径libs/plsyreadersdk1.jar
运行就可以生成一个删除重复包的jar文件,可以改rar文件 然后查看是否成功。