📦 APK 结构
概念APK 是 Android 应用的发布包,本质是一个 ZIP,内含 DEX、资源、native 库与 Manifest。
APK 内部结构
app.apk
├── AndroidManifest.xml 📄 二进制 XML(应用清单)
├── classes.dex 🧩 Dalvik 字节码(可能多个 classes2.dex…)
├── classes2.dex
├── resources.arsc 📊 编译后的资源表
├── res/ 📄 编译后的二进制 XML(布局等)
├── assets/ 📦 原始资源
├── lib/
│ ├── armeabi-v7a/
│ │ └── libfoo.so 🐚 32 位 native 库
│ └── arm64-v8a/
│ └── libfoo.so 🐚 64 位 native 库
└── META-INF/ 🔏 签名ClassyShark 的 APK 检查仪表盘
选中 APK 本身(而非单个类)时,ApkTranslator 触发 ApkDashboard,运行一组检查器:
| 检查器 | 检测内容 |
|---|---|
JavaDependenciesInspector | 重复的图像/HTTP/JSON 库、已弃用库 |
PrivateNativeLibsInspector | 打包了私有 NDK 库(Play Store 违规) |
DynamicSymbolsInspector | .so 缺 SONAME、有 text relocation |
ManifestInspector | Android O+ 后台不安全的隐式广播接收器 |
ApkNativeMethodsVisitor | 每个 dex 的原生方法计数与类 |
CLI 下用 -inspect 触发:
bash
java -jar ClassyShark.jar -inspect app.apk详见 检查 Manifest 教程 与 检查 native 库教程。