APK基础结构解析

最近在系统性地学习Android,后续也会持续更新Android的学习过程

APK基础结构解析

APK 本质上是一个 ZIP 包,通过解压APK文件之后就能看到文件的目录结构,通常是由

  1. AndroidManifest.xml
  2. classes.dex
  3. resources.arsc
  4. assets/
  5. lib/
  6. res/
  7. META-INF/

这几个部分主要部分组成。

1.AndroidManifest.xml

AndroidManifest.xml 用于描述“这个应用是什么、包含哪些组件、需要哪些权限、如何启动”。系统在安装与运行时会读取它来完成组件注册与权限校验。通常包含包名、Activity/Service/Receiver/Provider 声明、启动入口、权限申请、最低SDK、主题与应用级配置等。

image-20260412205746011

2.classes.dex

classes.dex 是应用的主要代码载体,包含了应用程序的可执行代码。保存 Java/Kotlin 等编译后的字节码(Dex 格式),由 Android 运行时加载并执行。

3.resources.arsc

resources.arsc 是 Android 资源系统的编译产物,这个文件并不存储实际的资源内容(如图片或字符串),而是存储资源与资源ID的映射关系。运行时通过 R.xxx 这类资源 ID 查找字符串、布局、图片等资源,本质上就是依赖这张表完成定位。

image-20260412210146604

4.res/

res/ 目录包含了Android应用所需的所有资源文件。与 assets/ 目录不同,res/ 目录中的资源文件是经过编译的,按照不同类型的资源进行组织,例如:**layout/**:存放XML格式的布局文件,定义界面的结构。

5.assets/

assets/ 中的文件一般不会被编译成资源 ID,而是“保持原样”打包进 APK。
适合放置自定义数据文件(json、html、脚本、模型、配置等)。运行时通常通过 AssetManager 以文件流方式读取。

6.lib/

lib/ 存放 JNI/NDK 编译出的原生动态库.so,通常按 CPU 架构分目录,例如 arm64-v8a、armeabi-v7a、x86_64 等。
应用在需要加密、引擎等时,会通过 System.loadLibrary() 等方式加载这些库。

7.META-INF/

META-INF 主要用于保存与签名、校验相关的元数据,例如 MANIFEST.MF、CERT.SF、CERT.RSA/EC 等文件。其核心作用是:在安装/校验时验证 APK 是否被篡改,以及确认发布者身份。

以上内容学习自:[原创]Android逆向0基础入门-APK全面解析,动调与脱壳-Android安全-看雪安全社区|专业技术交流与安全研究论坛


APK基础结构解析
https://j1nxem-o.github.io/2026/04/12/APK基础结构解析/
作者
J1NXEM
发布于
2026年4月12日
更新于
2026年4月12日
许可协议