獨孤碼農

毕生求一败而不可得 终埋剑于剑冢 诚寂寥难堪也

Android10系统架构和学习总纲

本文为Android10系统架构和学习总纲,会分类列出博主学习android10的所有博文,方便大家查阅

一.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层,下图是一张官网经典的架构分层图 应用层 系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。 应用框架层(Java Framework) 应用框...

Android源码查看和下载

汇总一下android源码下载和在线查看的网站和方法

本文最后更新于 2021-07-25 更新内容:删除了访问不了的网站,更新网站截图,添加新的资源网站    学习研究android系统,最直接最好的方法就是阅读源码(Read The Fucking Source Code),本篇教程汇总一下能够查看android源码的网站和下载源码的方法 一 在线查看 https://source.android.com/source/ 首...

Android10 dex和oat文件格式分析

Android dex,odex,oat,vdex,art文件结构学习分析

在之前的文章Android10Installd守护进程中有提到dexopt的操作,最后执行的操作是 run_dex2oat。本文将对dex和oat文件格式进行介绍分析。 run_dex2oat(input_fd.get(), out_oat_fd.get(), in_vdex_fd.get(), ...

Android10 WMS启动过程分析

WindowManagerService作为Android系统中重要的服务,管理所有的窗口和输入事件的中转站

一、概述 WindowManagerService作为Android系统中重要的服务,管理所有的窗口和输入事件的中转站,其相关类如下。 1.1 WMS类族 WMS继承于IWindowManager.Stub,作为Binder服务端 成员变量mSessions保存所有的Session对象,Session继承于IWindowSession.Stub,作为Binder服务端 成员变量mPolic...

Android10 输入输出系统全流程分析

本篇博文我们来学习下输入输出系统的全部流程

一. 概述 先简单总结和回顾以下前几篇文章的内容: Android10输入输出系统InputReader线程分析:通过EventHub从/dev/input节点获取事件,转换成EventEntry事件加入到InputDispatcher的mInboundQueue。 Android10输入输出系统InputDispatcher线程分析:从mInboundQueue队列取出事件,...

Android10 输入输出系统UI主线程分析

本篇博文我们来学习下输入输出系统在UI主线程中都有哪些相关的业务逻辑

一. 概述 前面文章都是介绍了两个线程InputReader和InputDispatcher的工作过程。在InputDispatcher的过程讲到 调用InputChanel通过socket与远程进程通信,本文便展开讲解这个socket是如何建立的。 对于InputReader和InputDispatcher都是运行在system_server进程; 用户点击的界面往往可能是某一个app...

Android10 输入输出系统InputDispatcher线程分析

本篇博文我们来学习下InputDispatcher线程的业务逻辑过程

一. InputDispatcher起点 上篇文章我们介绍InputReader利用EventHub获取数据后生成EventEntry事件,加入到InputDispatcher的mInboundQueue队列,再唤醒InputDispatcher线程。本文将介绍InputDispatcher,同样从threadLoop为起点开始分析。 1.1 threadLoop 先来回顾一下Input...

Android10 输入输出系统InputReader线程分析

本篇博文我们来学习下InputReader线程的业务逻辑过程

一. InputReader起点 上一篇文章我们介绍过IMS服务的启动过程会创建两个native线程,分别是InputReader,InputDispatcher. 接下来从InputReader线程的执行过程从threadLoop为起点开始分析。 1.1 threadLoop [-> InputReader.cpp] bool InputReaderThread::thread...

Android10 输入输出系统IMS启动过程分析

本篇博文我们来学习下系统服务InputManagerService的启动过程

一. 概述 当用户触摸屏幕或者按键操作,首次触发的是硬件驱动,驱动收到事件后,将该相应事件写入到输入设备节点, 这便产生了最原生态的内核事件。接着,输入系统取出原生态的事件,经过层层封装后成为KeyEvent或者MotionEvent ;最后,交付给相应的目标窗口(Window)来消费该输入事件。可见,输入系统在整个过程起到承上启下的衔接作用。 Input模块的主要组成: Nat...

Android10 从WMS角度分析应用启动过程

本文将从startActivity开始讲解应用启动过程中和WMS相关的逻辑

一、概述 本文将从startActivity开始讲解Android屏幕刷新机制,前面的文章有分析过startActivity的启动过程,这里将重点分析WMS相关的过程,从而了解Android屏幕刷新机制原理。前面介绍的startActivity启动过程的流程图如下: 二、View的绘制过程 从启动过程中的performLaunchAc...

Android10 开机广播发送流程分析

开机广播在很多应用中都会用到,用来启动应用程序,本文将介绍开机广播的发送过程

一、概述 开机广播在很多应用中都会用到,用来启动应用程序,下面将介绍开机广播的广播过程。这个过程比较复杂,需要和AcitvityManagerService、WindowManagerService、PackageManagerService等交互,其具体的时序图如下。 二、开机广播启动过程 在AMS启动那篇文章中已经讲到桌面如何的启...

Android10 OTA升级流程分析

目前Android系统终端的升级主要是通过无线进行的(FOTA,Firmware Over-The-Air)

一、概述 目前Android系统终端的升级主要是通过无线进行的(FOTA,Firmware Over-The-Air),主要流程是通过无线方式将升级包下载到终端,而后调用系统的升级接口进行升级。本文主要分析升级包下载后,调用系统升级接口之后的流程。 1.1 升级包结构 升级包是用make otapackage...