利用AS修改Jar包中class文件内容

利用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内容;
  • 结束;

经过我实际验证,上面的方法是可行的。并且效果很好!

你可能感兴趣的:(利用AS修改Jar包中class文件内容)