Android 13(T) - binder阅读开篇

news/2024/11/23 20:23:15/

写在前面:

原本计划用一个系列来记录自己学习Android Media框架的心得感受,但是刚刚起步就碰到了问题,由于Media框架中用了许多服务(binder service),而且我不太熟悉binder的用法,所以看代码的过程中心里总有些忐忑,害怕遇到binder,这对我对框架结构的理解学习是十分不利的。

binder作为android中最重要的进程间通信方式之一,不去了解始终是不行的,所以就下定决心去读一读,于是就有了这篇binder阅读开篇。当然这只是我的阅读笔记,共享出来是让想了解binder的同学一起学习,里面肯定会漏洞百出,也会有很多错误,如果有同学看到了错误,欢迎指出,我会努力改进的^_^

关于内容:

网上已经有许多大佬讲解了binder驱动,但是对于我这种小白来说,还是太难理解了。许多博文会去讲解binder是如何做一次数据拷贝的,花很大的功夫做内存分配的讲解,但这并不是我想深入了解的。作为一个新手,我想了解的更多的是binder中的数据是如何传输的?binder对象是如何传递的?从service manager中找到了服务,这个服务是什么?找到了服务怎么就可以调用这个服务提供的方法了呢?…

原先只看了binder C++框架的内容,也就是Bn、Bp那一套,到这里已经可以熟练使用binder了,但是好奇心作怪,又想了解了解上面疑问的答案,可实在是太难了!其实光想讲清楚Bn、Bp那一套,也需要对binder driver有比较多的理解,而这已经远远超出了我能力的范围。

对于我这种新手来说,binder driver还是太复杂,完全不能理解其中的细节实现。最后斟酌了一下,也算是放过自己,阅读过程中只去看大致的流程,譬如mmap,我只需要知道用户空间和内核空间共享了一片内存空间即可,至于如何共享的就不去过多理解,而数据传输部分可以多了解一下。还有其他的一些driver相关的知识,我们只要了解知道,不要深究为什么,不然就会陷入死胡同。

关于参考

学习binder需要很多的前备知识,对于我这位转码的同学(不了解Linux相关的底层操作系统相关的知识)来说,binder driver如天书一般,也下定决心后面会恶补基础知识。

学习过程中参考了很多大佬的博文,这里列出部分我看到的觉得写的好的参考,有了他们的帮助我才能够有理解binder的机会:
Android跨进程通信IPC
Binder系列
Android源码分析 - Binder驱动

代码参考:
Android 13 kernel-5.15
Android 13 framework/native/libs/binder/


http://www.ppmy.cn/news/515129.html

相关文章

手机刷机记录(nokia 6300)

6300号称最耐用的,结果才一年就被我弄得白屏开不了机了,开机重启三下就一直关机了。。在柜子里甩了半年,今天看到网上有刷机软件,以前怕刷成砖来着,现在懒得管了,不值钱的东西了已经是,后来才发…

诺基亚6300上可以用的UCWEB7.0版 JAR格式

from: http://www.ucwebxz.cn/post/nokia-6300-ucweb7.0-jad-jar.php 6300为S40系统的手机,属于非智能手机,但支持JAVA, 所以6300只能安装JAR版的UCWEB软件。 6300 UCWEB JAR最新版下载方法: 首先点击下面的网址打开UC浏览器官方下…

Vb+access工资管理系统(系统+答辩PPT+论文+开题报告+外文翻译)

工资管理系统用计算机管理企事业单位员工工资发放的一种计算机应用技术的创新,在计算机还未普及之前企事业单位的员工工资发放都是由财务管理人员来承担操作的.现在一般的企业都采用了信息化管理的方式即采用计算机作为工具的电子信息化的员工工资计算发放进行更有效的财务管理…

网络 - 你可知 Telnet 能通但是 Ping 不通百思不得其解

问题描述 以前本人以为 telnet 通 ping 一定也是通的,telnet 能通,表示两台计算机之间建立了连接通道。理论上是能 ping 通的。 但是今天万万没想到,并不是这样... 原因分析 如果不能 ping 通,可能的原因是对方主机关闭了 ping…

kali linux安装QQ linux版教程

一、QQ Linux官网下载 QQ Linux官网 https://im.qq.com/linuxqq/download.html点击deb然后选择确定 二、选择安装包 选中安装包,鼠标右键然后选择在这里打开终端 三、安装QQ依赖包 sudo apt install libgtk2.0-0 # Ubuntu出现以上信息说明依赖包安装成功 四、开…

树莓派玩linux安装qq,树莓派怎么安装QQ

从 Microsoft 下载中心下载用于 Raspberry Pi 2 的 ISO双击 ISO(IoT 核心版 RPi.iso)。它将自动将其本身作为虚拟驱动器进行装载,以便你可以访问内容。安装 Windows_10_IoT_Core_RPi2.msi。安装完成后,flash.ffu 将位于 C:\Program Files (x86)\Microsof…

kali安装QQ

kali安装QQ #下载地址https://qd.myapp.com/myapp/qqteam/linuxQQ/linuxqq_2.0.0-b1-1024_amd64.deb#安装sudo apt install libgtk2.0-0 #安装依赖 gtk2.0sudo dpkg -i linuxqq_2.0.0-b1-1024_amd64.deb #启动(已安装至应用列表,可直接点击图标启动)/usr/share/tencent-qq/q…

服务器打不QQ显示00001,QQ登陆不了显示00001,什么意思

下面小编将为新手朋友简单介绍下。 如果发现QQ登陆不上,首先检查电脑网络是否正常,比如可以打开浏览器看看能否打开网页。很多情况下都是由于网络不正常导致的QQ不能登陆,可能很多新手朋友会遇到开始都好好的,后面就登陆不上了&am…