android jar包编译与反编译技巧

android jar包编译与反编译技巧

android studio 打jar包

  • 生成可执行的jar包

gradle配置


apply plugin: 'java'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

sourceCompatibility = "1.6"
targetCompatibility = "1.6"
jar {
    archiveName 'alantest.jar'
    manifest {
        attributes 'Main-Class': 'com.actview.alantest.AlanTest'
    }

}

主要用来打成可执行的java程序,比如写一写小的辅助工具,需要指定jar包名称,main函数所在文件

  • 生成java依赖支持jar包

方法就行新建java library

这里写图片描述

这里写图片描述

新建好的module如下:

这里写图片描述

gradle配置如下


apply plugin: 'java-library'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

sourceCompatibility = "1.6"
targetCompatibility = "1.6"

jar {
    archiveName 'mytest.jar'
}


  • 打android依赖包jar包

新建android module

这里写图片描述

新建完的module如下
这里写图片描述

点击build==》》make module,编译module,生成编译文件,结果如下,jar包已生成

这里写图片描述

android jar包反编译

在平时的开发过程中,有时候会使用到第三方的jar包文件,由于第三方的jar包文件集成度比较高,并不符合我们自己项目的相关功能或者业务逻辑要求,需要对jar包文件进行修改,然后重新打成jar包使用,或者直接使用反编译出的jar包源文件作为依赖库。

以上面我们打出的jar包为例,我们拿到的只有jar文件
首先需要将.class文件转换成java文件供我们修改

.class文件查看可以直接在android studio内查看,如下所示

这里写图片描述

打开的.class文件由于没有用到混淆编译,所以与源文件相同,起始混淆和不混淆在机器面前都是一样的,只是增加反编译的难度,方法变量等名称不便于理解,要一步步找,费事

这里写图片描述

将.class文件反编译成java文件,使用android studio 使用到的开源工具fernflower,源码库可以从GitHub找到

将fernflower打包成jar工具包,

输入反编译指令进行反编译

D:\mywork>java -jar fernflower.jar -dgs=true D:\mywork\mytest.jar   D:\mywork\decompile

跳转到fernflower所在的工作目录,指定需要反编译的jar文件mytest.jar,输入到路径decompile下
这里写图片描述

反编译结果在decompile文件夹下,生成的是一个jar包,可以解压到本目录,解压之后发现文件已变成.java可编辑的java源码

这里写图片描述

将反编译后的java文件,放入到新建的module中,包名一致,修改后根据上面编译打包jar文件的步骤重新进行相关打包工作,即完成jar文件的反编译替换,或者将重新编译后的jar中的.class文件替换目标jar包中的.class文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章