Apktool的基本用法

這篇主要介紹下Apktool 的基本用法。掌握之後,可以做到

1.反編譯apk為smali 語言

2.二次重新打包apk

Apktool官方文檔地址,如有能力,儘量直接查閱官方文檔,本篇文章主要參考官方文檔。

Decoding 反編譯為Smali 語言


<code>apktool d demo.apk -o demo/<code>

這樣一行代碼就搞定,簡單解釋下參數的意義。

d 表示decode ,反編譯,與之對應的是building,編譯。demo.apk 是要反編譯的目標apk, -o 表示輸出地址 ,如果沒有 -o 參數,默認在當前文件夾。

反編譯之後的文件夾目錄結構如下

Apktool的基本用法

反編譯文件目錄結構.png

AndroidManifest.xml 是 Android 項目中的清單文件,可以直接打開查看

res 是資源文件,layout 和 value 都在這裡

smali 文件夾 是相關的Java 代碼轉換為 Smali 語言後的文件。

現在,如果是簡單的產看 App 的 UI結構或者使用某些資源,直接拿走即可。

下面介紹下怎麼將反編譯之後的文件,在重新打包為 Apk,前提是沒有修改任何文件。

Building 重新編譯Smali 文件為 Apk


<code>apktool b  demo -o demo_unsigned.apk/<code>

很簡單的一個命令,說下各個參數的意義

b,表示 building,編譯,與之對應的是 decoding。

demo 文件夾表示要編譯的目標文件夾 -o 表示輸出文件名和路徑。

編譯好之後的apk 是沒有簽名的。

在部分平臺下,編譯時提示缺少部分資源文件,需要安裝 framework.apk 文件,執行下面的命令即可

1.判斷是否安裝有 framework-res.apk


<code>apktool if framework-res.apk/<code>

2.安裝 framework-res.apk


<code>apktool if framework-res.apk/<code>

framework.apk 在手機上 /system/framework 目錄下,複製出來即可。


分享到:


相關文章: