先把结论放在前面:Android 的分层不是"越往下越底层"这么一句话能说清的,它有一条真正的设计主线——"应用能碰到什么,取决于系统愿意开放什么"。每一层的存在意义都是在可控性与安全性之间划界。所以答这题的重点不是背层名,而是说清每层拦住了什么、开放了什么。
这题问法开放,容易答成"App 调 Framework,Framework 调 Native,Native 调 HAL 再调内核"这种背诵式答案。面试官真正想听的是"权限与窗口为什么不能由应用自己管"这一个问题。
五层结构与各自的"把关点"
| 层 | 位置 | 职责 | 把关什么 |
|---|---|---|---|
| 应用层 | APK内的 dex | 业务逻辑、界面 | 用户行为与权限申请 |
| Framework 层 | framework/base | Java API 与系统服务 | 权限裁决、窗口管理、组件生命周期 |
| Native 层 | frameworks/native、C/C++ | 进程管理、驱动调用、系统 |