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 目录下,复制出来即可。


分享到:


相關文章: