Android jar包class修改重新打包

项目中会遇到想要把apk,第三方jar包,或者sdk等的代码实现进行修改,比如放开日志打印开关等,这时候就需要把jar包中的class进行反编译出来,然后进行修改之后重新打包。

反编译出class文件

apk的话用dex2jar进行对dex逆向成jar包。
jar包的话直接解压出class文件。
修改jar里面的class文件一般有两种方式。

正向

copy出要修改的class,在别的项目新建文件,代码同要修改的class,导入需要的依赖类资源等,正向导出jar包,然后解压copy出class文件,这种方式主要是修改少量代码,相对独立依赖较少的代码,相对容易,不过两次打jar包的jdk版本有要求,可能会导致不兼容。

javac命令,编译为class字节码

1
javac hello.java

逆向

jclasslib 这个工具貌似是可以搞的

还可以利用反射进行修改