在项目中遇到需求想要从已经打包好的jar修改其中的类来扩展功能怎么办?大概分为以下步骤:

  • 反编译jar从class文件拿到Java源码
  • 修改源码后生成class文件
  • 替换class文件
  • 重新打包

1、反编译

执行以下命令解压jar文件

jar -xvf X.jar

反编译jar得到源码

使用工具 jadx-gui,下载地址:https://github.com/skylot/jadx

如何修改jar的class文件-RAE

找到要修改的类复制Java源码。

注意:如果不想下载工具可以自己在AndroidStudio里面直接复制源码

2、编译项目

在AndroidStudio 新建项目,修改源码后进行编译。执行assemble编译任务后在/build/intermediates/javac/release/classes 找到生成好的class文件

3、替换class文件重新打包

把class 文件替换回去后,执行以下命名进行打包

cd 到刚才解压的目录里面
jar -cvf YOUR.jar ./

至此已完成新的jar文件。

详情参考文章