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文件

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