Android分层

Android 系统的分层,说白了就是把复杂的功能拆成 "一层管一层",就像盖房子:底层打地基,中层搭框架,上层做装修,每层各司其职,既好维护又能让开发者不用管底层细节,专注做 App。

官方核心分4 大层,但日常聊的时候会简化成更易理解的版本,下面用 "人话 + 场景" 讲清楚:


一、核心四层(从下到上,越往上越贴近用户)

1. 底层:Linux 内核层(地基)

  • 干啥的:管手机硬件的 "底层操作",比如 CPU、内存、摄像头、电池、网络、蓝牙、触摸屏,还负责进程管理、安全权限、驱动适配。
  • 大白话例子:你点一下屏幕,是内核先接收到 "触摸信号",再传给上层;App 要调用摄像头,也是内核帮着打通硬件通道。
  • 特点:基于 Linux 内核改造,不用开发者碰,Android 系统自己维护。

2. 中层:原生库 + Android 运行时层(框架支撑)

这层分两部分,合起来是 "给上层提供工具包":

  • 原生库(C/C++ 库):一堆现成的底层功能库,比如处理图片的 Skia 库、播放视频的 Media 库、数据库 SQLite、定位 GPS 库,App 的复杂功能都是调用这些库实现。
  • Android 运行时(ART):管 App 的运行,比如把开发者写的 Java/Kotlin 代码转换成手机能看懂的指令,还负责内存回收(避免 App 卡崩)。
  • 大白话例子:你在 App 里看图片,其实是调用了 Skia 库;刷短视频的视频解码,靠的是 Media 库。

3. 上层:应用框架层(装修模板)

  • 干啥的:把底层的功能包装成 "简单好调用的接口(API)",比如 Activity(页面)、Service(后台服务)、Broadcast(广播)、通知、权限管理、界面控件(按钮 / 输入框)。
  • 大白话例子:开发者做 App 的 "登录页面",不用自己写 "页面显示逻辑",直接用框架层的 Activity;做 "推送通知",直接调通知 API 就行,不用管底层怎么发通知。
  • 特点:Android 开发的核心,90% 的 App 开发都是和这层打交道。

4. 最上层:应用层(最终成品)

  • 干啥的:就是我们能看到、能用到的所有 App,包括系统自带的(电话、短信、设置)和第三方的(微信、抖音、淘宝)。
  • 特点:所有 App 都基于下面三层的能力运行,比如微信发消息,先调用框架层的网络 API,再通过原生库、内核层打通网络硬件。

二、简化版分层(新手 / 日常沟通够用)

很多人会把 "原生库 + 运行时" 合并,说成三层

  1. 内核层(硬件驱动 / 基础管理)
  2. 框架层(原生库 + API 接口)
  3. 应用层(系统 App + 第三方 App)

三、关键知识点(避坑 + 理解)

  1. 层与层之间靠 "接口" 通信:上层不能直接碰底层,比如 App 不能直接操作内核,必须通过框架层的 API 间接调用,这样能保证系统稳定(比如防止 App 乱改硬件设置)。
  2. 为啥要分层:比如要升级手机的蓝牙驱动,只改内核层就行,不用动上层的 App;开发者做 App,不用懂 "蓝牙怎么工作",只需要调框架层的蓝牙 API。
  3. 常见误区:别把 "Android 分层" 和 "App 架构分层(MVC/MVVM)" 搞混 ------ 前者是整个系统的分层,后者是单个 App 内部的代码分层。
相关推荐
杉氧7 小时前
副作用 (Side Effects) 全攻略:如何像大师一样掌控 Composable 的生命周期?
android·架构·android jetpack
Kapaseker12 小时前
Kotlin Toolchain 0.11 发布:主要是把 Amper 干没了
android·kotlin
三少爷的鞋13 小时前
Android 现代架构不需要事件总线进阶篇
android
杉氧1 天前
深入理解 Compose 重组机制:快照系统如何驱动 UI 精准刷新?
android·架构·android jetpack
召钱熏1 天前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
杉氧1 天前
深度解析:Jetpack Compose 核心架构与底层原理 —— 十年安卓老兵的“破茧重生”
android·架构·android jetpack
通玄1 天前
Jetpack Compose 入门系列(七):ViewModel 与界面状态管理
android
落魄Android在线炒饭1 天前
Android Framework 开发技巧:android.jar 生成与系统快速编译验证
android
如此风景1 天前
Kotlin Flow操作符学习
android·kotlin
plainGeekDev1 天前
GreenDAO → Room
android·java·kotlin