核心系统架构(Android的“骨架”)
这是Android系统运行的基础,开发者通常不需要直接接触,但理解它对于深入掌握Android至关重要,它分为四层:

-
Linux内核层
- 作用:提供最核心的操作系统功能,如硬件驱动管理、进程管理、内存管理、安全机制(如用户权限隔离)等。
- 关键技术:
- 硬件抽象层:Google为了保护硬件厂商的知识产权而引入的,它允许厂商提供二进制驱动,而无需开源,开发者或上层系统通过HAL接口与硬件交互。
- 驱动程序:负责与CPU、GPU、摄像头、传感器、蓝牙、Wi-Fi等具体硬件通信。
-
系统运行时库层
- 作用:为上层应用提供核心的C/C++库支持,以及Android运行时环境。
- 关键技术:
- 原生C/C++库:
libc(C标准库),Media Framework(多媒体框架),OpenGL ES(图形库),SQLite(轻量级数据库),WebKit(浏览器渲染引擎) 等。 - Android运行时:
- ART (Android Runtime):从Android 5.0开始成为默认运行时,它采用AOT(Ahead-Of-Time)或DGC(Deferred Compilation)技术,应用启动更快,运行效率更高,内存占用更优。
- Dalvik:早期的运行时,采用JIT(Just-In-Time)编译技术,现在已被ART取代。
- 原生C/C++库:
-
应用框架层
- 作用:这是开发者最常打交道的一层,提供了构建应用所需的各种API和核心服务。
- 关键技术:
- Activity Manager (活动管理器):管理应用的生命周期和任务栈。
- Window Manager (窗口管理器):管理应用程序的窗口。
- Content Provider (内容提供者):实现不同应用间的数据共享。
- View System (视图系统):构建UI界面的基础,包括各种控件(Button, TextView等)和布局(Layout)。
- Notification Manager (通知管理器):在状态栏显示通知。
- Package Manager (包管理器):管理所有应用的安装、卸载和权限。
- Location Manager (位置管理器):提供定位服务。
- Telephony Manager (电话管理器):提供电话相关功能。
-
应用层
(图片来源网络,侵删)- 作用:用户直接看到和使用的部分,包括所有预装的应用和用户自己安装的第三方应用。
- 关键技术:所有使用Java/Kotlin/ C++等语言编写的App。
应用开发技术栈(开发者最关心的部分)
这是构建Android App的核心技术,主要分为编程语言、UI、架构、数据存储等。
-
编程语言
- Kotlin (首选):Google官方推荐的语言,现代、简洁、安全(空指针安全)、与100% Java兼容,并提供了很多强大的新特性(如协程、Flow)。
- Java (传统):Android开发的传统语言,拥有海量的学习资料和库,虽然不再是首选,但在许多老项目中仍在使用。
- C/C++:用于开发高性能、对硬件要求高的模块,如游戏引擎、音视频编解码、NDK开发等。
- 其他:如通过 Flutter (Dart语言) 或 React Native (JavaScript/TypeScript) 等跨平台框架进行开发。
-
UI开发技术
- XML布局文件:传统定义UI的方式,将界面逻辑与业务逻辑分离。
- Jetpack Compose (现代):Google推出的声明式UI工具包,你只需描述UI在不同状态下应该“是什么样子”,框架会自动处理状态变化和UI更新,这是Android UI开发的未来方向。
- 视图系统:传统UI的基石,包括View和ViewGroup(如LinearLayout, RecyclerView)。
- 布局管理器:
ConstraintLayout(强烈推荐,灵活高效),LinearLayout,RelativeLayout等。
-
应用架构
(图片来源网络,侵删)- MVVM (Model-View-ViewModel):目前最主流、Google推荐的架构。
- Model:数据层,负责处理数据来源(网络、数据库)。
- View:UI层,负责展示UI和响应用户操作(Activity/Fragment + Compose/View)。
- ViewModel:业务逻辑层,持有UI相关的数据,并连接Model和View,它生命周期长,能配置更改(如屏幕旋转)。
- MVP (Model-View-Presenter):MVVM的前身,通过Presenter作为中间人,彻底分离View和Model。
- MVI (Model-View-Intent):在MVVM基础上发展而来,强调UI状态是单向流动的,更适合复杂状态管理的场景。
- Clean Architecture / SOLID原则:更高级的设计思想,强调模块间解耦,使代码更易于测试和维护。
- MVVM (Model-View-ViewModel):目前最主流、Google推荐的架构。
-
异步与并发
- Kotlin协程:处理异步任务的首选,它让异步代码看起来像同步代码一样简洁,避免了回调地狱,并提供了结构化并发,能有效管理任务生命周期。
- RxJava / RxKotlin:另一个强大的响应式编程库,用于处理异步事件流,功能强大但学习曲线较陡。
- Thread / Handler / AsyncTask (已废弃):传统的多线程处理方式,现在基本被协程和RxJava取代。
-
数据存储
- Room (持久化库):Google推荐的ORM(对象关系映射)库,它是对SQLite的封装,提供了编译时检查、类型安全等便利。
- SharedPreferences:用于存储简单的键值对数据。
- SQLite:轻量级的关系型数据库,适合存储结构化数据。
- DataStore (现代):替代SharedPreferences的新一代解决方案,支持Proto DataStore(类型安全)和Preferences DataStore,提供协程和Flow API,异步且更安全。
-
依赖注入
- Hilt:Google推荐的依赖注入框架,是Dagger的简化版,它能帮助你管理对象的生命周期和依赖关系,使代码更模块化、可测试。
- Koin:一个轻量级、简单易用的依赖注入框架,基于Kotlin DSL。
-
网络请求
- Retrofit:目前最流行的HTTP客户端,它将RESTful API转换为Java/Kotlin接口,非常简洁易用。
- OkHttp:Retrofit的底层网络库,负责处理网络连接、缓存、超时等。
- Ktor:由JetBrains开发,一个功能丰富的异步HTTP客户端,完全使用Kotlin编写。
系统级与高级技术
这些技术通常用于开发系统应用、性能优化或实现高级功能。
-
Android NDK (Native Development Kit)
允许开发者使用C/C++代码编写部分应用,适用于需要极致性能、复用现有C/C++库或直接操作硬件的场景。
-
Android Automotive OS (AAOS)
专门为智能汽车操作系统定制的Android版本,集成了仪表盘、信息娱乐系统等,有专门的车规级API和设计规范。
-
Android Things (已停止维护)
早期为物联网设备设计的Android系统,现在相关技术已融入到Android主系统或Android Studio中。
-
Android TV / Android Wear OS (原Wear OS)
分别针对智能电视和智能手表定制的Android系统,有独特的UI和交互规范。
-
Project Mainline (模块化系统)
Google的一项重要计划,将核心系统组件(如WebView, 编解码器, 安全补丁)作为Google Play系统更新的一部分进行推送,这使得关键安全更新和功能升级可以绕过设备制造商,直接推送到用户手中,大大提升了系统的安全性和更新速度。
-
折叠屏适配技术
- 提供了
DisplayCutout、WindowInsets等API,以及新的Jetpack Compose布局和Multi-Window管理能力,以适应折叠屏、异形屏等复杂形态。
- 提供了
开发、测试与发布工具链
- Android Studio:官方的、唯一的集成开发环境,基于IntelliJ IDEA,集成了代码编辑、调试、性能分析、模拟器、APK构建等所有功能。
- SDK (Software Development Kit):软件开发工具包,包含API库、构建工具、模拟器系统镜像等。
- Gradle:主要的自动化构建工具,用于编译代码、管理依赖、打包APK/AAB。
- Firebase:Google提供的后端即服务平台,集成了Crashlytics(崩溃分析)、Analytics(数据分析)、Performance Monitoring(性能监控)、Authentication(身份认证)等强大功能,极大简化了App开发和运维。
- Google Play Console:应用发布和管理的后台,用于上传App、查看数据、回复评论、发布更新等。
| 技术领域 | 核心技术 | 描述 |
|---|---|---|
| 系统架构 | Linux内核, HAL, ART, 应用框架 | 系统运行的底层基础,提供服务和API |
| 应用开发 | Kotlin, Jetpack Compose, MVVM, Retrofit, Room | 构建现代Android App的核心技术栈 |
| 高级特性 | NDK, Android Automotive OS, Project Mainline | 针对特定场景(如高性能、汽车)的系统级技术 |
| 工具链 | Android Studio, Gradle, Firebase, Play Console | 从开发、测试到发布的全流程工具 |
对于开发者而言,掌握Kotlin语言、Jetpack组件(特别是Compose和ViewModel)、MVVM架构以及现代化的依赖注入和网络库,是当前Android开发的主流和必备技能,理解系统架构有助于解决更深层的问题和进行性能优化。
