利用AS修改Jar包中class文件内容
找了半天,什么jclasslib、ce2.23、Krakatau、dirtyjoe都不行。后面自己总结了下修改class的原理,就是使用解压jar->修改class->更新jar。AS自带有反编译功能,反编译出来的效果也不错,既然这样就干脆自己重现需要修改的class->然后编译->更新jar。具体流程如下:
- 使用AS反编译需要修改的文件;
- 新建一个同包名的类,把上一步反编译出来的内容拷贝进去;
- 在新建的类中修改;
- 编译;
- 找个临时目录,使用jar xf <*.jar>;
- 拷贝{app}/build/intermediates/classes/debug/{package}下新建类的class文件到临时目录的对应文件中并覆盖掉;
- 使用jar uf <*.jar> {package}/{name}.class 更新jar内容;
- 结束;
经过我实际验证,上面的方法是可行的。并且效果很好!