比如某个库中包含了一些so、一些class文件,这时候项目中其他库也有这些文件,我们就需要讲某个库中这些重复的so、class文件删除,再重新打包。
一、解压aar
通过unzip命令将aar解压到指定的tmpDir文件夹中
unzip dest.aar -d tmpDir
如果windows电脑没有安装unzip,可能会报错,此时只需要安装下unzip工具即可。
windows安装unzip
去unzip官网:gnuwin32.sourceforge.net/packages/un…
选择binary下载:
下载完成后解压:
再将unzip.exe可执行文件放到C盘windows/System32中即可。
现在再执行unzip命令,发现可以正常识别了。
二、删除多余的so文件
将jni\arm64-v8a和armeabi-v7a下多余的so删除。
三、修改jar文件
通过jd-gui打开jar包后,file-保存即可将class文件保存到本地。然后可以编辑该class,修改。
修改的过程参考:juejin.cn/post/708971…
如果此时不需要修改代码那么此步骤可以省略。
一般aar中解压后jar文件的名称如下图所示:
要想修改jar,需要先解压,我们还是通过unzip命令:
unzip classes.jar -d classes
然后我们会得到一个包含jar中所有源码(即class文件的)文件夹classes:
然后我们此处可以删除一个文件,来模拟修改aar中的某个class的操作。
四、重新打包修改后的jar
在解压jar后的classes目录中(注意是要进入到解压jar后的文件目录中,此处为classes目录),运行下面的命令,即可打包代码为新的classes.jar文件:
jar cvf classes.jar . (注意最后有个.)
此处生成的就是我们删除class文件后新的jar包,将tmpDir中原本的classes.jar用新生成的classes.jar替换掉。
五、重新打包aar
回到tmpDir的上层目录中,通过下面的命令会打包一个名为dest.aar的文件:
jar cvf dest.aar -C tmpDir/ .
反编译中dex转为jar
1.0将准备好的XXX.apk 重命名 XXX.zip 文件
1.1 将XXX.zip 解压得到 classes.dex
1.2 将classes.dex 导入到 dex2jar-2.0 目录下 ,按住shift+鼠标右键 打开运行命令界面,
输入 d2j-dex2jar classes.dex 得到classes-dex2jar.jar
2.0 用jd-gui 打开 classes-dex2jar.jar 文件 即可拿到源码