基础知识和相关文件
基础知识
Android下层显示相关的代码相对而言并不是很多,核心部分在三件厂商或SOC厂商提供/集成的驱动之中。尽管如此,这部分代码涉及到一系列基础类库,不了解的话也很难读懂。
这些基础知识这里只做简单介绍,详细了解看链接或可自行百度或Google
binder/Service
Android中用于进程间通信的基本方法,需要了解它是怎么使用的,不然会搞不明白surfaceflinger服务怎么起来,怎么发挥作用的。
http://blog.csdn.net/new_abc/article/details/8097775
Thread
Android自己实现的线程类封装。主要关注子类需要重写哪些虚函数,做什么事情。
system/core/libutils/Threads.cpp
这篇文章可以参考一下,不过 libutils的目录在Android4.4之后改到system/core下面了。
http://www.csdn123.com/html/blogs/20130802/46970.htm
sp/wp
Android里面的智能指针和弱引用,基础类型了,主要留意onFirstRef的调用时机。
http://blog.chinaunix.net/uid-24922718-id-3787722.html
MessageHandler/Loop
Android中的消息处理机制,对显示而言,主要是用来做vsync垂直同步时用到。
http://www.cnblogs.com/angeldevil/p/3340644.html
Zygote
Android所有进程的父进程,涉及开机动画。不过这部分代码和上层显示关联更多(预加载)。
http://blog.csdn.net/zhgxhuaa/article/details/24201127
OpenGL和EGL
图形标准和窗口标准。使用GPU硬件加速功能必须。
OpenGL没什么文章能讲清的,没有背景知识的了解一下就好。
EGL可以参考这篇:
http://blog.csdn.net/ldh_123456/article/details/17422479
Android下层显示主要相关文件
系统头文件
上层库共享接口定义
system/core/include/system/graphics.h
system/core/include/system/window.h
硬件模块接口定义
hardware/libhardware/include/hardware/gralloc.h
hardware/libhardware/include/hardware/hwcomposer_defs.h
hardware/libhardware/include/hardware/hwcomposer.h
系统库
主要模块和相关类如下图所示:
驱动
设备相关的HAL层驱动各厂商并不相同且一般属于保密信息,Kernel也主要是根据芯片使用手册配置寄存器,不适合讲且没有太多参考价值。