Android N Display System(5):Android Display System 系统分析之Display Driver Architecture
注:文章都是通过阅读各位前辈总结的资料、Android 7.1.2 && Linux(kernel 3.18)Qualcomm平台源码、加上自己的思考分析总结出来的,其中难免有理解不对的地方,欢迎大家批评指正。文章为个人学习、研究、欣赏之用,图文内容整理自互联网,如有侵权,请联系删除,禁止转载(©Qualcomm Technologies, Inc. 版权所有),谢谢。
【特别感谢 - 高通Android平台-应用空间操作framebuffer dump LCD总结】【特别感谢 - linux qcom LCD framwork】【特别感谢 - msm8610 lcd driver code analysis】
Google Pixel、Pixel XL 内核代码(文章基于 Kernel-3.18): Kernel source for Pixel and Pixel XL - GitHub
AOSP 源码(文章基于 Android 7.1.2): Android 系统全套源代码分享 (更新到 8.1.0_r1)
🌀🌀:专注于Linux && ...
Android N Display System(4):Android Display System 系统分析之Gralloc && HWComposer模块分析
注:文章都是通过阅读各位前辈总结的资料、Android 7.1.2 && Linux(kernel 3.18)Qualcomm平台源码、加上自己的思考分析总结出来的,其中难免有理解不对的地方,欢迎大家批评指正。文章为个人学习、研究、欣赏之用,图文内容整理自互联网,如有侵权,请联系删除,禁止转载(©Qualcomm Technologies, Inc. 版权所有),谢谢。
【特别感谢 - Android研究 Gralloc && HWComposer系列分析】【特别感谢 - Android display 系列分析】【特别感谢 - Android图形显示之硬件抽象层Gralloc】
Google Pixel、Pixel XL 内核代码(文章基于 Kernel-3.18): Kernel source for Pixel and Pixel XL - GitHub
AOSP 源码(文章基于 Android 7.1.2): Android 系统全套源代码分享 (更新到 8.1.0_r1)
🌀🌀:专注于Linux && Andro ...
Android N Display System(3):Android Display System 系统分析之HardwareRenderer.draw()绘制流程分析
注:文章都是通过阅读各位前辈总结的资料、Android 7.1.2 && Linux(kernel 3.18)Qualcomm平台源码、加上自己的思考分析总结出来的,其中难免有理解不对的地方,欢迎大家批评指正。文章为个人学习、研究、欣赏之用,图文内容整理自互联网,如有侵权,请联系删除,禁止转载(©Qualcomm Technologies, Inc. 版权所有),谢谢。
【特别感谢 - Android应用程序UI硬件加速渲染技术简要介绍和学习计划】【特别感谢 - Android N中UI硬件渲染(hwui)的HWUI_NEW_OPS(基于Android 7.1)】【特别感谢 - Android DisplayList 构建过程】
Google Pixel、Pixel XL 内核代码(文章基于 Kernel-3.18): Kernel source for Pixel and Pixel XL - GitHub
AOSP 源码(文章基于 Android 7.1.2): Android 系统全套源代码分享 (更新到 8.1.0_r1)
🌀🌀:专注于Linux &a ...
Android N Display System(2):Android Display System 系统分析之Android EGL && OpenGL
注:文章都是通过阅读各位前辈总结的资料、Android 7.1.2 && Linux(kernel 3.18)Qualcomm平台源码、加上自己的思考分析总结出来的,其中难免有理解不对的地方,欢迎大家批评指正。文章为个人学习、研究、欣赏之用,图文内容整理自互联网,如有侵权,请联系删除,禁止转载(©Qualcomm Technologies, Inc. 版权所有),谢谢。
【特别感谢 - Android Graphics and Android EGL】【特别感谢 - Android 4.4 (KitKat) Design Pattern-Graphics Subsystem】【特别感谢 - Android 4.4 (KitKat) in virtualization VSync signal】【特别感谢 - Android显示系统设计框架介绍】【特别感谢 - 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)】
Google Pixel、Pixel XL 内核代码(文章基于 Kern ...
Android N Display System(1):Android Display System 系统分析之Android Graphics 系统分析
Android系统图形框架由下往上主要的包括HAL(HWComposer和Gralloc两个moudle),SurfaceFlinger(BufferQueue的消费者),WindowManagerService(窗口管理者),View(BufferQueue的生产者)四大模块。● HAL: 包括HWComposer和Gralloc两个moudle,Android N上由SurfaceFlinger打开,因此在同一进程。 gralloc 用于BufferQueue的内存分配,同时也有fb的显示接口,HWComposer作为合成SurfaceFlinger里面的Layer,并显示(通过gralloc的post函数)● SurfaceFlinger可以叫做LayerFlinger,作为Layer的管理者,同是也是BufferQueue的消费者,当每个Layer的生产者draw完完整的一帧时,会通知SurfaceFlinger,通知的方式采用BufferQueue。● WindowManagerService: 作为Window的管理者,掌管着计算窗口大小,窗口切换等任务,同时也会将相应的参 ...
Android Input System(2):Android 7.1.2 (Android N) Android 输入子系统 - Input System分析
Android 输入子系统概述:● 当时输入设备(如触摸屏,键盘等)可用时,Linux Kernel会在/dev/input/下创建名为event0~eventN的设备节点; 当输入设备不可用时,会将相应的设备节点删除。● 当用户操作输入设备时,Linux Kernel会收到相应的硬件中断,然后会将中断加工成原始输入事件(raw input event),并写入到设备节点中。而后在用户空间就可以通过read()函数读取事件数据了。● Android输入系统会监控/dev/input/下的所有设备节点,当某个结点有数据可读时,将数据读出并进行一系列处理,然后在当前系统中的所有窗口(Window)中寻找合适的接收者,并把事件派发给它。● 具体来说,Linux Kernel将raw input event写入到设备节点后,InputReader会通过EventHub将原始事件读取出来并翻译加工为Android输入事件,而后把它交给InputDispatcher。InputDispatcher根据WMS(WindowManagerService)提供的窗口信息将事件传递给合适的窗口,若窗口为壁 ...
Android Input System(1):Linux内核(Kernel-3.18) - Linux Input 子系统分析
源码(部分):
kernel/msm-3.18/include/linux
Input.h
evdev.h
kernel/msm-3.18/drivers/input
Input.c
evdev.c
gpio_keys.c
kernel/msm-3.18/drivers/input/touchscreen/synaptics_dsx_htc_2.6
Makefile
Kconfig
synaptics_dsx_core.c
Google Pixel、Pixel XL 内核代码(Kernel-3.18):
Kernel source for Pixel and Pixel XL - Google Kernel source for Pixel and Pixel XL - GitHub
(一)、Linux Input 子系统框架输入(Input)子系统是分层架构的,总共分为5 层,从上到下分别是:用户空间层(User Space)事件处理层(Event Handler)、输入子系统核心层(Input Core)、硬件驱动层(Input Driver) 、硬件设备层(Hard ...
Android N 基础(6):Android 7.1.2 Android WindowManagerService 窗口管理服务分析
窗口管理系统WMS是Android中的主要子系统之一,它涉及到App中组件的管理,系统和应用窗口的管理和绘制等工作。由于其涉及模块众多,且与用户体验密切相关,所以它也是Android当中最为复杂的子系统之一。一个App从启动到主窗口显示出来,需要App,ActivityManagerService(AMS),WindowManagerService(WMS),SurfaceFlinger(SF)等几个模块相互合作。App负责业务逻辑,绘制自己的视图;AMS管理组件、进程信息和Activity的堆栈及状态等等;WMS管理Activity对应的窗口及子窗口,还有系统窗口等;SF用于管理图形缓冲区,将App绘制的东西合成渲染在屏幕上。
源码(部分):/frameworks/base/services/core/java/com/android/server/am/
ActivityStack.java
ActivityManagerService.java
ActivityStackSupervisor.java
ActivityStarter.java
ActivityRecor ...
Android N 基础(5):Android 7.1.2 Activity - Window 加载显示流程(AMS && WMS)分析
Activity-Window加载显示流程概述: Android系统中图形系统是相当复杂的,包括WindowManager,SurfaceFlinger,Open GL,GPU等模块。 其中SurfaceFlinger作为负责绘制应用UI的核心,从名字可以看出其功能是将所有Surface合成工作。 不论使用什么渲染API, 所有的东西最终都是渲染到”surface”. surface代表BufferQueue的生产者端, 并且 由SurfaceFlinger所消费, 这便是基本的生产者-消费者模式. Android平台所创建的Window都由surface所支持, 所有可见的surface渲染到显示设备都是通过SurfaceFlinger来完成的. 本文详细分析Android Window加载显示流程,并通过SurfaceFlinger渲染合成输出到屏幕的过程。
一、Activity启动流程概述基于Android 7.1.2的源码剖析, 分析Activity-Window加载显示流程,相关源码:
frameworks/base/core/java/android/app/● Act ...
Android N 基础(4):Android 7.1.2 Activity 启动流程 (AMS)分析
Activity启动流程概述:● 点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;● system_server进程接收到请求后,向zygote进程发送创建进程的请求;● Zygote进程fork出新的子进程,即App进程;● App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;● system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;● App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;● 主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。
一、概述基于Android 7.1.2的源码剖析, 分析Android Activity启动流程,相关源码:
frameworks/ba ...