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安全-看雪安全社区|专业技术交流与安全研究论坛


Android系统架构学习

Android 官方通常将系统划分为5层架构,更清晰地理解其执行链路如下:

BootLoader → Kernel → Native → Framework → App

image-20260412232303194

1、 Linux 内核层(Kernel)

Android 底层基于 Linux 内核,主要负责:进程管理、内存管理、设备驱动(Camera、Display、Binder等)、安全机制,核心作用是为整个 Android 提供最底层能力。

2、硬件抽象层(HAL)

HAL(Hardware Abstraction Layer)作用:为上层提供统一硬件接口、隔离硬件差异,核心作用是屏蔽硬件差异,让上层统一调用。

3、Native 层(C/C++ 系统库 + Android Runtime)

这一层可以拆成两部分:

3.1 Android Runtime(运行时环境)

包含两部分:

(1)核心库

提供 Java API(如 android.osandroid.media

(2)虚拟机

Android 5.0 之前:Dalvik 、Android 5.0+:ART(主流)

ART 的特点:支持 AOT + JIT 编译,更高性能,更好的 GC 和调试能力

重要特点:

  • 每个 App 独立进程 + 独立虚拟机
  • 执行的是 DEX 字节码

3.2 Native 系统库(C/C++)

主要包括:libc(C标准库)、OpenGL ES(图形)、SQLite(数据库)、WebKit(浏览器内核)、SSL(安全通信)、Media(音视频)

核心作用是提供底层功能支持。

3.3 关键进程

init:所有用户进程的父进程

Zygote:预加载类和资源,fork 出所有 App

System Server:管理 Framework 层核心服务

4、Framework 层(Java API 框架)

这是开发者最常接触的一层,提供大量系统服务:

核心组件:

ActivityManager、WindowManager、PackageManager、ResourceManager、NotificationManager、ContentProvider

作用是向 App 提供 API 和系统服务。

5. App 层(应用层)

所有应用(系统 + 第三方)都在这一层;运行在独立进程、独立虚拟机(ART)

特点:应用之间隔离、可调用系统 API

6. 关键机制补充

6.1 JNI(Java ↔ Native)

作用:Java 调用 C/C++ 代码;使用场景:NDK开发等

6.2 系统调用(Syscall)

关系:

1
Java JNI → Native → Syscall → Kernel

7、总结

Android 架构本质是:

基于 Linux 内核,通过 HAL 抽象硬件,利用 Native + Runtime 提供基础能力,Framework 提供 API,最终支撑 App 运行的一整套分层系统。

学习的文章:Android 系统架构图_软件静态架构图-CSDN博客


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