1、百度一圈没有落地的详细方法
如何修改jar包并重新打包?在网上百度谷歌了一圈,发现几种方案,有的说用工具去改比如什么jclasslib、asm、还有说字节码插桩的等的,尝试了一下,都不是很方便,有的方法根本就不行。
2、直接用android studio或者eclipse就可以做到
直接用android studio或者eclipse就可以做到修改jar包并重新打包。
思想原理是啥?
建立一个库工程,引用要修改的jar、在android studio或者eclipse中打开你要修改的类文件,可以很方便的找到类的源码、在工程中新建相同的类,将对应源码复制过去、然后删除jar中对应的class文件、修改源码后,重新打包就可以生成新的jar包了。
具体怎么操作呢?
1、首先建立一个工程并且引用jar
你要修改什么jar,就建立什么库工程(库工程就是可以直接生成jar的)。比如我要修改一个android用到的jar,那我就建立一个android工程,为什么要这么做?因为jar包里面有引用到android 中的api。如果你是java ee里面的jar,那就建立一个java ee项目。
2、找到你要修改的jar中类的源码
比如我要修改a.jar包中B类文件里面对应的c函数,那我就找到这个B.class文件啊,双击就可以打开看到java源码了(这是android studio或者eclipse的好处,不需要另外重新安装什么jadx\jdgui软件是不是),B文件的源码直接复制出来,在你的工程中新建一个相同包名类名的文件B.java,粘贴源码。
3、删除原来的class文件
这时候删除掉原来jar中的class文件。也就是删除a.jar包中B.calss文件,这一步很简单,直接用7zip打开jar,删除掉B.calss文件就可以了(windows 7zip, Mac the unarchiver)
4、改java源码
1、修复语法错误
这一步先修复B.java文件的语法报错。往往就是混淆后,变量名混在一起报错了。不要怕,很简单搞定他。常见的例子就是a a=new a();这样的句子,报错说a类型不对,或者说a找不到。那怎么办?读读上下文代码嘛,看下这个a到底指向哪个类,然后把a换成全路径就好了。
2、加入你想要的内容
改修改B.java文件,加入你想要的内容
5、重新编译打包成新jar
改好之后直接重新打包就可以了
|