https://liuzhichao.com/2016/jadx-decompiler.html
在jadx出現之前,我一般是使用apktool和dex2jar這兩個Android反編譯工具。這兩個工具也有不同的側重點,如果只是想拿到apk里的一些圖片或其他資源或是查看一下布局的layout文件,直接使用apktool -d xxx.apk
即可。如果是要查看一下代碼實現,就使用d2j-dex2jar.sh
反編譯一下apk然后使用jd-gui工具查看反編譯后的.jar文件。
apktool+dex2jar+jd-gui一直是一個比較流行的Android反編譯組合。 在使用過jadx之后覺得jadx相比上面的組合具有如下兩個優點: * 可以直接反編譯出.java文件 * 查看源碼時直接顯示資源名稱,而不是像jd-gui里顯示的資源ID
安裝jadx
編譯安裝
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist
然后將build/jadx/bin加入到環境變量。
直接下載安裝
- github: https://github.com/skylot/jadx/releases
- sourceforge: http://sourceforge.net/projects/jadx/files/
使用jadx
jadx也有GUI,直接雙擊bin目錄下的jadx-gui,然后選擇要反編譯的apk即可,運行效果如下。

jadx -d out classes.dex #直接輸出.java文件到out目錄
jadx-gui classes.dex #使用gui打開
在反編譯較大的apk時,如果遇到jadx-jui卡頓和假死的情況,可適當優化jvm相關參數, 我直接在~/.bash_profile
中加上了如下語句:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"