android studio修改jar包中的class文件

问题:
在java开发中经常用到第三方的jar包,在使用中会遇到jar包中的包名冲突、jar包中的程序需要修改等问题,诸如此类问题就需要对jar包中的java字节码程序进行修改,本文探讨在安卓as开发环境中修改jar包中的class文件。
思路:
我们无法在as反编译出的代码中直接修改源文件,那就把class反编译出的java源程序复制到我们的项目中,比照反编译出的java源程序中包名创建一个包名类似的java包,如原来包名是“com.myjar,我们创建一个包名叫“com.myJar”的包(注意只有j大小写的区别),然后在这个包下创建和jar包中同名的java类“MyCreateJar”,并把android studio反编译class的源程序拷贝到新建的类中,接下来按我们的需求修改这个类,修改完毕后,重新生成apk,在“\app\build\intermediates\classes\debug\com\myJar”目录下包含了“MyCreateJar.class”文件,这个class文件包含了我们新修改的代码,然后用这个新的class替换原来jar包中的文件就可以了,因为生成这个文件时我们用了“com.myJar”这个包名,把“j”换成了“J”,“MyCreateJar.class”直接打到jar包中是不能使用的,为此我们用“010 Editor”修改“MyCreateJar.class”中的常量池,把“J”在替换成“j”,然后重新打包成jar文件。​​​​​​​

文档及测试源码地址:
CSDNicon-default.png?t=M276https://mp.csdn.net/mp_download/manage/download/UpDetailed


 

你可能感兴趣的:(intellij-idea)