本文作者
作者:阿豪元代码
链接:
https://juejin.cn/post/7195770700106776636
本文由作者授权发布。
Activity 的启动过程,这个会涉及到 AMS/ATMS 和 WMS 的实现。 Binder 如何通过一次拷贝完成 IPC。 View 的绘制流程。 SurfaceFlinger 的工作原理与流程。 ......
Android 的应用非常广泛,不仅是手机,可能汽车,手表,冰箱,微波炉,电视,机顶盒,空调的内部都有一个 Android 系统。广泛的应用促使了对 Framework 人才的大量需求,因为 Framework 学习门槛较高,导致企业招聘相对困难,薪资也比大部分 App 开发岗位高出不少。如果能系统地学习 Framework 并加入这类企业,不论从经济上还是个人职业发展上都是非常不错的选择。
图片来自官网
https://developer.android.com/guide/platform?hl=zh-cn
Linux kernel 层,很大一部分内容是驱动程序。 HAL 层,对下封装驱动硬件操作,对上向 App 提供统一稳定的驱动操作接口。 Native层,主要是 C/C++ 库以及 Java 虚拟机。 Java 层,主要是 Java 库,系统服务等。 App 层,一些系统和三方APP。
图片来自 gityuan
http://gityuan.com/android/
kernel 层主要向上提供了驱动,Hal 层加以封装后,向上提供驱动程序功能。 Native 层通过 init 进程启动了很多守护进程用于支持系统的运转。 Java 层通过 Zygote 孵化了 Java 守护进程,用于支持系统的运行和 App 的运行。
添加自己的硬件、驱动、HAL和硬件系统服务,硬件的提供商可能会提供相应软件支持。 定制系统 App,比如 Launcher Setting System UI Message Camera 等。 开发厂商自己的系统 App,比如 音视频播放器 应用商店 主题 红外遥控等。 个性化功能开发,比如软件多开,手机分身,语音变声,录屏,双卡双待等等。 集成一些常用三方应用,比如 微信 淘宝 爱奇艺等。 系统稳定性 性能 安全相关优化。 系统裁剪。
1. 基础知识
C/C++ Java JNI
Python:源码下载工具 repo 使用 python 对 git 操作做了封装,以适应多个 git 仓库的操作。 Shell 编程:Android 编译系统包含了大量的 Shell 脚本。 go 语言,Android 编译系统中部分脚本使用 go 语言编写。
熟悉 Linux 的基本使用,主要是常用的命令和常用服务搭建。 熟悉 Linux 系统编程,Native 层使用了很多系统编程接口,熟悉 Linux 系统编程是读懂 Native 层的基础。 Linux 系统编程可能或多或少需要我们对 Linux 内核有基本的了解。
2. AOSP 源码上手
3. AOSP 编译系统
4. Hal与硬件服务
完成一个简单字符驱动程序的编写。 完成 Hal 层编写,首先掌握传统方式,再学习基于 HwBinder 的现代方式。 最后就是在系统中添加硬件服务,写个简单的 App 访问我们的硬件服务。
5. 基础组件
Android 智能指针 Android 属性系统 Android 日志系统 SeAndroid Android 权限系统 匿名共享内存
6. Binder
7. 系统启动过程分析
图片来自这里
https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/article/android/framework/Android-%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B.md
init 的实现细节。 Zygote 的具体实现。 SystemServer 的内部实现。
8. 应用层框架
AMS/ATMS Handler 和 Looper PackageManagerService
9. 显示系统
Hal 层的 Gralloc 和 Hwcomposer Surfaceflinger WMS View 系统
10. Android 输入系统
读取事件 分发事件 处理事件
11. 系统应用
Calculator Setting Launcher SystemUI
在掌握了这 11 个专题后,不论是继续研究 Framework 中其他模块,或是参与 App 开发,又或是研究内核与驱动,我相信,你一定早已是是游刃有余了!
最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!
推荐阅读:
点击 关注我的公众号
如果你想要跟大家分享你的文章,欢迎投稿~
┏(^0^)┛明天见!