这篇文章写得挺不错的,就是篇幅长,内容多,而且平时没有解过这方面的bug,感觉理解的并不是特别透彻 VSync信号的科普我们上一篇已经介绍过了,这篇我们要分析在SurfaceFlinger中的作用。(愈发觉得做笔记对自己记忆模块巩固有很多帮助,整理文章不一定是用来给别人看的,但一定是为加强自己记忆的~) 流程基础 从上一篇得知,Android 4.1一个很大的更新是Project Butter,黄油计划,为了解决用户交互体验差的问题(Jelly Bean is cra…
这篇文章写得挺不错的,就是篇幅长,内容多,而且平时没有解过这方面的bug,感觉理解的并不是特别透彻 VSync信号的科普我们上一篇已经介绍过了,这篇我们要分析在SurfaceFlinger中的作用。(愈发觉得做笔记对自己记忆模块巩固有很多帮助,整理文章不一定是用来给别人看的,但一定是为加强自己记忆的~) 流程基础 从上一篇得知,Android 4.1一个很大的更新是Project Butter,黄油计划,为了解决用户交互体验差的问题(Jelly Bean is cra…
在我们详细分析SurfaceFlinger之前要了解一下VSync信号,为下一节分析Vsync工作原理打下基础。 VSync信号相关 首先我们要了解以下几个概念 屏幕刷新率 即 Refresh Rate 或 Scanning Frequency,单位赫兹/Hz,是指设备刷新屏幕的频率,该值对于特定的设备来说是个常量,如 60hz。 每一台CRT显示器都有自己的刷新率,其单位是Hz,其数值是显示器每秒钟更新画面的次数。不同…
上一篇我们分析了Android的开机动画启动流程,这一篇我们基于上一篇的基础,分析一下SurfaceFlinger的启动,还有连接它的过程。 SurfaceFlinger的启动 启动概述 SurfaceFlinger服务是一个独立进程,并且负责统一管理设备的帧缓冲区。通过上一篇开机动画流程分析,我们可以在init.rc中找到SurfaceFlinger服务配置的地方,位于system/core/rootdir/Init.rc中: [crayon-62bcd79a7ac…
在详细分析SurfaceFlinger模块之前要先看看Android的开机动画,因为这个BootAnimation是一个C++应用程序,需要使用SurfaceFlinger服务来创建和渲染自己的Surface,并且不涉及与用户进行交互,所以能以最简洁的方式体现Android与SurfaceFlinger服务的关系。 开机动画的启动 第一个开机画面是在内核启动的过程中出现的,它是一个静态的画面。第二个开机画面是在init进程启动的过程中出现的,它也是一个静态的画面。第三…
PS:最近工作事情太多,Android显示框架这一块都没有时间好好分析,其次是显示框架的内容实在是太多,自己看代码还好,但是要总结也不知道从哪里开始好。估计可能是理解还不够透彻吧,所以还是多看一些博客,自己也结合代码分析一下会好点。 前言 Android的Graphic系统是设计的很精妙,但是也很复杂。SurfaceFlinger也是Graphic系统中十分重要的组成部分,要从正面分析不是一件容易的事情。所以我们先从侧面窥视它的重要模块,积累起足够的模块基础,再统一分析,就会一目了然。 GU…
FrameBuffer通常作为LCD控制器或者其他显示设备的驱动,FrameBuffer驱动是一个字符设备,设备节点是/dev/fbX,主设备号为29,次设备号递增,用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。Framebuffer设备为上层应用程序提供系统调用,也为下一层…
在CIA VAULT 7 , NSA Shadow Broker 泄漏事件之后,信息安全也逐渐受到越来越多的关注,作为信息安全行业从业人员,除了参与这一场集体躁动之外,还需回归技术本身,对泄漏的资料和工具进行分析研究,以做到知己知彼。 Sec·Ret 团队在对所有泄漏资料进行分析后,形成了一系列技术研究文章并会陆续进行发表,希望在增强自身技术储备的同时,也能够和同行多多交流,共同成长。 在Bootloader系列文章中,我们对主流bootloader的前身高通 little kernel 进行了深入的源码分析,并对…