要移除的jar包不在aar包中的classes.jar中
直接把aar包里的Jar打包的时候给去掉,就像下面这这样。注意,要使用exclude module这种方式,直接使用exclude group方式没有效果。exclude group的方法适用于exclude JAR包中的文件。
1 2 3 |
implementation(name: '×××××××aar', ext: 'aar') { exclude module: 'gson' } |
但是,上面的操作有时候不能生效,尤其是复杂依赖的情况下。我们可能需要在每个间接依赖上都手工进行排除操作,这样就非常麻烦了。
这时候最简单的办法就是移除不需要的jar包,然后重新打包了。
或者要移除的jar包在aar包中的classes.jar中
这个时候,使用exclude方法已经不能生效了。你可以使用下面的通用方法
解压aar文件到tmpDir目录下
1 |
$ unzip ×××.aar -d tmpDir |
找到classes.jar包,用压缩工具打开,删除目标文件
将tmpDir重新打包成一个新的aar
1 |
$ jar cvf ×××NewLib.aar -C tmpDir/ . |
另外,有人开发了 排除AAR(Jar)包中冗余或者冲突类的gradle脚本 。如果图方便的话,可以直接用这个脚本来排除。