使用 APK 分析器的命令行版本,您可以在构建流程完成后立即了解 APK 的组成,并且可以比较两个 APK 之间的差异。使用 APK 分析器可以减少调试应用中的 DEX 文件和资源相关问题所花费的时间,并减小 APK 的大小。
apkanalyzer
包含在 Android SDK 工具软件包中,位于 android_sdk/tools/bin/apkanalyzer
下,它是一个Linux程序,而不是一个Windows exe程序,需要在shell环境下运行。或者,您也可以在 Android Studio 中访问 APK 分析器工具,如使用 APK 分析器来分析您的 Build 中所述。
语法
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject
是您要查询的内容,可以是整个 APK,也可以是 APK 的一部分。subject 可以是以下任意一项。
-
apk
:分析 APK 文件属性,如应用 ID、版本代码和版本名称。 -
files
:分析 APK 文件内的文件。 -
manifest
:分析 APK 文件内的清单的内容。 -
dex
:分析 APK 文件内的 DEX 文件。 -
resources
:查看文本、图片和字符串资源。
verb
是您要了解的关于 subject 的内容。subject、verb 及其选项在命令中进行了介绍。
每个命令都要求您指定一个 APK 文件。只有 apk compare
命令要求您指定第二个 APK。只要选项含义明确,您就可以缩短每个选项。例如,--human-readable
全局选项可以缩短为 -h
。以下示例会分析 apk
(subject) 以获取其 file-size
(verb),然后以简单易懂的格式(-h
选项)输出文件大小:
apkanalyzer -h apk file-size myapk.apk
全局选项
选项 | 说明 |
| 以简单易懂的格式输出大小。 |
命令
以下命令说明按 subject 整理,并列出了每个 subject 适用的 verb 和选项组合。
查看 APK 文件属性 | 说明 |
| 输出应用 ID、版本代码和版本名称。
输出示例:
|
| 输出 APK 的总文件大小。 |
| 输出 APK 的下载大小估计值。 |
| 输出 APK 用来触发 Play 商店过滤的功能。添加
输出示例:
|
| 比较
输出示例(旧大小/新大小/大小差异/路径):
|
查看 APK 文件系统 | 说明 |
| 列出 APK 中的所有文件。
输出示例:
|
| 输出文件内容。您必须使用 |
查看清单中的信息 | 说明 |
| 以 XML 格式输出 APK 清单。 |
| 输出应用 ID 值。 |
| 输出版本名称值。 |
| 输出版本代码值。 |
| 输出最低 SDK 版本。 |
| 输出目标 SDK 版本。 |
| 输出权限列表。 |
| 输出应用是否可调试。 |
访问 DEX 文件信息 | 说明 |
| 输出 APK 中的 DEX 文件列表。 |
| 输出指定 DEX 文件中的方法引用数。默认包含所有 DEX 文件。添加
输出示例:
|
| 输出 DEX 中的类树。在输出中,
添加以下选项可优化输出:
输出示例(类型/状态/定义的方法/引用的方法/字节大小/名称):
|
| 以 smali 格式输出类或方法的字节码。输出中必须包含类名,并且要输出完全限定类名以进行反编译。添加 |
查看存储在 res/ 和 resources.arsc 中的资源 | 说明 |
| 输出资源表中定义的软件包列表。 |
| 输出指定 |
| 输出由 |
| 输出属于某种配置和类型的资源名称列表。 |
| 以简单易懂的形式输出 XML 二进制文件。添加 |