Cheson Blog

探索 专注 勤奋 坚持

Android短信接收流程

分析短信接收流程

rild 接收来自modem的消息,在hardware/ril/reference-ril/reference-ril.c static void onUnsolicited (const char *s, const char *sms_pdu) { ... } else if (strStartsWith(s, "+CMT:")) { RIL_onUnsol...

HIDL系列四

绑定式的案例及理解

0 概述 本篇来介绍如何在源码中添加一个绑定式(binderized)的实例,包括了hal文件的编写,hidl-gen工具自动化生成hidl服务端文件,服务端代码的编写,bp文件的配置,c++测试客户端的编写,selinux配置和vndk配置。 绑定式HIDL,HAL作为服务端,直接以一个Service的形式运行,所有HAL的实现也都在服务进程中实现。在客户端使用时选择服务获取方式来从hw...

HIDL系列二

same-process直通式的案例及理解

0 概述 本篇来介绍如何构建一个最基础的same-process passthrough实例。 1 same-process passthrough简介 same-process passthrough是谷歌在Treble结构中,为了分离framework和vendor所引入的HIDL的实现的第一种形态。在这种方式下,把HIDL的定义放在framework中,真正的实现放在vendor...

HIDL系列三

绑定化直通式的案例及理解

0 概述 本篇来介绍如何在源码中添加一个绑定化直通式(binderizing passthrough)的实例,包括了hal文件的编写,hidl-gen工具自动化生成hidl服务端文件,服务端代码的编写,bp文件的配置,c++测试客户端的编写,selinux配置和vndk配置。 绑定化直通式,也就是在same-process直通式的基础上,添加了一个服务,在服务启动时将HIDL的服务注册到h...

HIDL系列一

深入理解直通式和绑定式

0 概述 hidl的实现分为了直通式(passthough)和绑定式(binderized),google官网和其他论坛上对这两种方式做了一定的描述,但是以我等悟性,实践出真知。本篇来详解下直通式和绑定式的一些细节。 1 Treble 很多人可能像我一样,第一个问题就会问什么是绑定式,什么是直通式?其实这个应该算是个究极问题,内容太多,难以回答。我们把它拆开来,从整个事情的起源开始,不...

Android图形系统分析一

Gralloc模块的实现原理分析

分析平台 本文主要参考了老罗的Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析,以MT6735(android 5.1)的代码为例做的分析。而能阅读的代码部分只是google释放的hal层代码。其实这部分代码并未真正在系统运行时使用,MTK会修改这部分hal层实现,释放gralloc.mt6735.so库来被Gralloc模块初始化时加载...

Android签名系统详解

深入介绍电子签名的设计原理

为什么需要电子签名 水浒传给我们的启示 在《水浒传》第三十九回宋江在江州来到浔阳楼自饮自吃,题反诗两首。无为军通判黄文炳于浔阳楼上发现宋江反诗,蔡九知府下令捉拿。宋江装疯。蔡九知府闻知是近疯,把宋江下到死囚中,派戴宗去东京报告蔡太师。戴宗被朱贵领上梁山泊,吴用教戴宗赚萧让(书法家)金大坚(雕刻家)上山,假造蔡京回书。黄文炳通过书信中使用的印章识破了假信,将宋江和戴宗一同下入死囚牢,之后引出...

开机时间分析总结

分析实例

1 开机时间定义 分析开机时间,首先来看开机时间是如何定义的,此前提未搞清楚会让测试结果没有准确性可言. 1.1 计时方法 一次完整又准确的开机时间测试,必须包含一个明确的计时起点和计时终点. 在我们的项目中,终点可能会有好几种,例如最常见的是launcher显示出来,但这里有时也会有分歧,站在客户的角度上,launcher加载并不是终点,他们会已launcher上所有的icon和widg...

系统升级系列八

update-binary程序介绍(如何解析和执行updater-script)

1 updater程序代码 接系列七里的升级流程,最终会把update.zip这个升级包通过fork一个子进程的方式去启动升级包里的update-binary这个bin档去做升级,那么来看下这个bin档的代码 代码位于bootable/recovery/updater下,就几个文件,一个Android.mk,updater.c和updater.h,install.c和install.h,...

系统升级系列七

升级包安装流程

1 Recovery启动 在系列六里介绍了uboot如何读取启动参数,然后决定进入主系统(Main System)还是Recovery系统,这里就从启动了Recovery开始。Recovery的代码位于bootable/recovery目录下,我们先来看recovery.cpp,这个是Recovery启动的入口。 先不着急看代码流程,在recovery.cpp开头,有一段注释非常重要,介...