Apk 是 Android 应用使用的文件格式,它实际上是一个 zip 压缩包,可以直接用 tar 命令解压:
tar -xvf app-debug.apk
✗ tree -L 1
.
├── AndroidManifest.xml
├── DebugProbesKt.bin
├── META-INF
├── classes.dex
├── classes2.dex
├── classes3.dex
├── classes4.dex
├── kotlin
├── res
└── resources.arsc
3 directories, 7 files
tar 解压缩得到的 AndroidManifest.xml 是一个二进制文件,不是直接可读的文本文件,格式是 Android 自行实现的 Binary XML,不是 xml 通用的二进制的格式,没用标准的解读工具。
Android application package uses an undocumented binary XML format.[5]
axmldec: Android Binary XML Decoder 解读 AndroidManifest.xml:
brew tap ytsutano/toolbox
brew install axmldec
将二进制格式的 AndroidManifest.xml 转换成文本格式:
axmldec -o output.xml AndroidManifest.xml
apktool 是 apk 修改器,能够将 apk 文件反向解析,然后将其重新打包成 apk 文件,为修改闭源的第三方 apk 提供了方便。
brew install apktool
apktool 会将整个 apk 文件反向解析:
apktool d app-debug.apk