25.2.1 Android系统组成概要

2025-06-22 17:37:45 更新

Android是开源移动终端操作系统,分成Linux内核层(Linux Kernel)、系统运行库层(Libraries和Android Runtime)、应用程序框架层(Application Framework)和应用程序层(Applications)。

(一)各层功能


层次

说明

1

应用程序层

Android平台不仅是系统,也包含许多应用程序,如短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等。

2

应用程序框架层

核心应用程序基于本层实现核心功能。开发者可以直接使用组件来进行快速开发或个性化拓展。

①Activity Manager(活动管理器):管理各程序生命周期及导航回退功能

②Content Provider(内容提供器):使不同程序之间存取或者分享数据

③Location Manager(位置管理器):提供位置服务

④Notification Manager(通知管理器):在状态栏中显示自定义提示信息

⑤Package Manager(包管理器):Android系统内的程序管理

⑥Resource Manager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

⑦Telephony Manager(电话管理器):管理所有移动设备功能

⑧View System(视图系统):构建应用程序的基本组件

⑨Window Manager(窗口管理器):管理所有窗口程序

3

系统运行库层

系统库

连接应用程序框架层与 Linux 内核层

①FreeType:提供点阵字与向量字描绘与显示

②Libc:标准 C系统函数库(定制)

③LibWebCore:Web浏览器引擎,驱动Android浏览器和内嵌web视图

④Media Framework:多媒体库,支持多种常用音频、视频格式录制和回放

⑤OpenGL|ES:3D绘图函数库

⑥SGL:底层2D图形渲染引擎

⑦SQLite : 小型关系型数据库引擎

⑧SSL:通信过程中实现握手

⑨Surface Manager:负责显示与存取操作间互动、2D绘图与3D绘图显示合成

Android

runtime

核心库:提供Java API 中大多数功能和Android核心API。

Dalvik虚拟机:每个Android 程序都运行在自己的Dalvik虚拟机实例中。注意:不是编译后的字节码,而是dex格式的中间码。

4

Linux内核层

提供进程管理、内存管理、文件系统管理、设备驱动程序等操作系统的基本功能

(二)安全威胁

各层都面临着不同程度安全威胁,基础层安全威胁来自Linux内核攻击可能获取系统最高权限。

(三)常见威胁

APK重打包(repackaging)、更新攻击、诱惑下载、提权攻击、远程控制、恶意付费、敏感信息搜集.四

(四)APK文件

APK文件是Android Package的缩写,即Android安装包。

apk文件本质是一个压缩包,可以将apk文件后缀改为.zip来观察apk中的文件。


文件夹/文件

说明

备注

1

assets

静态资源文件(图片,视频等)

不会被编译,支持任意深度子目录。

访问时依赖AssetManager类

2

lib

.so库、系统库、开发者打包库

加密token生成方式放在.so文件。

根据CPU型号不同,分为ARM,ARM-v7a,MIPS,X86目录

3

META-INF

应用签名信息

签名验证APK文件完整性

打包APK时,计算APK包中所有文件的完整性,保存到本目录

安装APK时,根据META-INF目录校验APK完整性,确保每个文件都不会被篡改。

包含文件:

①CERT.RSA:用于签名的公钥证书

②CERT.SF:各文件摘要,确保完整性

③MANIFEST.MF:存储元数据(签名算法、证书及签名有关信息)

4

res

资源文件(静态文本,图片,关键资源) 汉化

编译后映射到Android工程.R文件中,生成对应ID。

调用方式:R.id.filename

子目录:

①anim存放动画文件;

②drawable目录存放图像资源;

③layout目录存放布局文件;

④values存放特征值;

⑤colors.xml存放color颜色值;

⑥dimens.xml定义尺寸值;

⑦string.xml定义字符串值;

⑧styles.xml定义样式对象;

⑨xml存放xml文件。

5

AndroidManifest.xml

配置信息

开发Android应用时,需要把代码中的Activity,Service,Provider和Receiver在AndroidManifest.xml中注册,系统才能启动对应组件。还包含一些权限声明及使用的SDK版本信息等

6

classes.dex

android dalvik虚拟机可执行文件

打包时通过AndroidSDK的dx工具(合并,重组,优化、压缩class文件)将Java字节码→Dalvik字节码。

7

resources.arsc

资源索引/对应文件

根据资源ID在res目录下寻找资源

(五)四大组件


组件


作用

安全威胁

1

Activity

活动

核心组件,表示应用的一个单一屏幕,是用户与应用交互的主界面。每个 Activity 提供一个窗口,用于绘制界面和接收与用户的交互事件。

每个 Activity 都是一个独立的界面。

越权:敏感页面需要验证用户身份

拒绝服务崩溃:接受Intent传输的畸形数据

界面劫持

2

Service

服务

可以在后台执行长时间运行的任务而不需提供用户界面(即使用户已离开应用)。

用来处理不需要与用户交互而需要长期运行的操作。

分为前台服务(显示持续通知)和后台服务(应用不在屏幕显示时执行)。

提权

service劫持

消息伪造

拒绝服务

3

Broadcast Receiver

广播接收器

用来处理来自系统或应用发出的广播通知。

可以对设备启动完成、电池电量变化、短信接收等系统事件做出响应,也可以接收应用自定义的广播消息。

消息伪造和拒绝服务

拒绝服务

4

Content Provider

内容提供器

用于在不同应用程序之间共享数据。

提供了一种封装数据的方式,并通过一套标准 API 在应用之间进行数据访问。

某应用可以允许其他应用访问其数据,而不需要直接访问底层数据库或文件系统。

敏感信息泄露

SQl注入

目录遍历

数据备份

(六)存储方式


存储方式

描述

1

SharedPreferences

轻量级的数据存储方式,本质是xml文件,适合保存键值对类型的简单配置信息。

2

文件存储

应用程序可以在自己的私有区域中创建文件,其他应用无法访问

3

SQLite数据库

轻型的关系型数据库,适合存储结构化数据

4

ContentProvider

提供了一种统一的通过Uri实现数据操作的方式。

content://hx.android.text.myprovider/name

5

网络存储

调用WebService返回的数据或是解析HTTP协议实现网络数据交互