0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Andorid系统中binder是什么意思

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:Jasonangel 2023-10-07 15:13 次阅读

binder是什么?可以理解为Andorid系统中的一种进程间通信的方式,虽然Android系统基于Linux,但是它并没有采用Linux自带的进程间通信方式,而是采用了更高效的binder,理解binder对于理解Android系统具有至关重要的作用。binder原理图如下:

图片

Binder通信采用c/s架构,和Socket一样,但是稍微复杂。binder组件包含Client、Server、ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务。

具体通信过程:Server先向ServiceManager注册一个服务,其实也就是一个字符串。然后Client从ServiceManager获取服务,关键字就是注册的字符串。这样Client和Server就可以通信。真正的数据流是走了底层的Linux内核空间的binder驱动,但这个是被封装的,所以不用关心真正的binder驱动,只管在Client和Server之间调用函数收发数据就行。就是服务端的onTransact函数和客户端remote()-》transact(TEST,data, &reply),发送的数据存在data中,返回的数据存在reply中。Client和Server都可以收发数据。

安卓系统架构图:

图片

理解了binder以后,具体分析:binder驱动肯定是在最下面的Linux内核中,那么binder的客户端和服务器,可以存在在任何地方。举例:

1、bindder服务器在app层,客户端在app层。2、bindder服务器在native层,客户端在app层。3、bindder服务器在app层,客户端在native层。4、bindder服务器在native层,客户端在native层。

以上四种情况都可以。

说的比较抽象,我发两篇文章连接,这两篇文章的代码我已经验证过,可以使用。需要注意的是,APP层的binder由java语言编写,native层的binder,由C++语言编写。但其实接口都很相似。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134407
  • Andorid
    +关注

    关注

    0

    文章

    7

    浏览量

    6930
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
收藏 人收藏

    评论

    相关推荐

    汽车车身控制与舒适性系统检修:控门锁系统控制电路#汽车维修

    汽车电子系统
    学习电子
    发布于 :2022年11月20日 15:15:49

    汽车车身控制与舒适性系统检修:控门锁系统故障诊断和排除#汽车维修

    汽车电子系统
    学习电子
    发布于 :2022年11月20日 15:16:47

    项目源码--Android团购类客户端

    数据处理模块(5)Android的Sqlite数据库以及Sqlite数据的使用(6)Andorid的定位系统(7)Andorid的数据恢复系统(8)支持了图片模和文字模式源码目录定位团
    发表于 07-15 16:44

    [资料分享]+Android框架揭秘

    服务框架的层次结构 34810.1.2 java服务框架各个类间的相互作用 35110.2 运行机制 35410.2.1 java服务框架初始化 35510.2.2 binder 35510.2.3
    发表于 09-26 09:47

    openHarmony IPC数据调用的过程分享

    Binder驱动对应的Binder实体的Binder引用的描述。 }; void*cookie; // 当type=BINDER_TYPE_BIN
    发表于 03-30 09:26

    移植openharmony启动后一直打印binder驱动程序报错是怎么回事

    在移植openharmony过程,由于添加了新组件,启动后,一直打印binder驱动程序报错,错误如下所示。01-01 00:00:45.218 1 1 E 00719/Init
    发表于 05-23 17:27

    WifiStateMachine死锁导致Binder Thread超限触发Watchdog重启方案

    1、WifiStateMachine死锁导致Binder Thread超限触发Watchdog重启  系统信息:问题发生的系统是Android P,跑压测复现到,复现过两次,目前看起来是google
    发表于 10-19 18:00

    imx8mm andorid10无法接入GPS,需要对Android10源码做哪些改动?

    你好 我用的是imx8mm andorid10,gps是ttymxc2,cat是可以的。 evk_8mm:/ # 猫 /dev/ttymxc2 $BDGSV
    发表于 04-25 07:31

    ARM成立ANDORID解决方案中心

    ARM成立ANDORID解决方案中心 ARM公司宣布设立Android解决方案中心,该中心为设计和开发基于ARM技术的、并且运行在Android(源自Open Handset Alliance™的开源平台)平台的人
    发表于 11-18 09:18 542次阅读

    Andorid在平板电脑中的应用

    本内容介绍了Andorid在平板电脑中的应用,详细介绍了Andorid再结构及功能和平板电脑的发展及技术方面知识
    发表于 07-18 10:26 221次下载
    <b class='flag-5'>Andorid</b>在平板电脑中的应用

    Deep Dive into Android IPC_Binde

    深入介绍Android系统的IPC binder 框架,对了解Android系统内部运作机制有很大帮助。
    发表于 03-11 13:42 11次下载

    谷歌发布Andorid系统的新补丁,面向Android 10的BUG修复和后台优化

    今天谷歌也是早早就发布了Andorid系统的新补丁,这是11月份的安全补丁,用来修复近期曝光的安全漏洞同时还带来了面向Android 10的BUG修复和后台优化。
    的头像 发表于 11-05 15:16 2500次阅读

    锂电池测试箱----德国BINDER宾德的详细介绍

    德国宾德BINDER电池测试箱适用于对锂离子电池和模块进行测试。在和锂离子电池打交道的时候,可能存在各种危险。系统操作员需要对风险进行评估,并通过合适的安全方案来应对风险。德国BINDER宾德锂电池
    发表于 09-27 17:35 1600次阅读
    锂电池测试箱----德国<b class='flag-5'>BINDER</b>宾德的详细介绍

    Android系统启动流程

    Andorid 系统是在嵌入式行业中广泛应用的系统,手机、平板、机器人、汽车中控系统都有使用安卓系统的,在应用方面的优势是安卓
    的头像 发表于 10-07 14:58 377次阅读
    Android<b class='flag-5'>系统</b>启动流程

    如何在AOSP12中查看binder调用信息呢?

    部分APP不会使用常规的framework api调用系统的一些函数获取信息,但是如果他自己构建binder调用的信息获取,最后都会跑到这个函数中去。
    的头像 发表于 11-27 09:40 400次阅读