AIDL与HIDL核心概念

简介: AIDL与HIDL核心概念

一. 概述

AIDL和HIDL都是主要用于跨进程通信,本质是Binder通信。

总体流程都是先写.aidl文件或.hal文件,这个文件只有接口定义哦不是实现,然后利用工具自动生成代码,再利用生成的代码写具体接口的实现及调用。

二. 核心流程的核心理解

网上很多说不清楚,不要扯虚头巴脑的一堆,我说下核心流程:

  1. 先.aidl生成代码,比如 IMyAidlInterface.aidl 生成代码,server侧和client侧都要有哦,包名要一样。
  2. Server侧:继承生成代码中的 IMyAidlInterface.Stub 类来实现接口,比如 class MyBinder extends IMyAidlInterface.Stub,因为 service 通信时候你要调用接口所以在 onBind() 中返回该类。
  3. Client侧:onServiceConnected() 里获取刚才准备好的 MyBinder 类,iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service),调用接口的方式就直接 iMyAidlInterface.[接口] 就可以了。

对照我说的流程看一遍实际例子,你会透彻理解!最后部分我提供了优秀博客例子。

.hal 流程一样的,只不过不叫 Proxy 和 Stub ,而是叫 Bp 和 Bn。

三. 一些术语

对于AIDL生成java代码,客户端(client)对应 Proxy,服务端(server)对应 Stub。注意,也可生成c++代码,如今 framework 与 native 通信经常使用。

对于HIDL生成c++代码,客户端(client)对应 Bp(Binder Proxy),服务端(server)对应 Bn(Binder Native)。

本质一样。

可以这样理解,你要去银行存钱,你找个代理人去存,存在ATM里。你是client,银行是server,代理人是proxy,ATM是stub。钱需要是序列化数据Parcel。

通信是 kernel 帮你做的,感兴趣可以深入。

四. 参考样例

编写 AIDL 流程可参考优秀博客:

AIDL - 简书 (jianshu.com)

---------------------

作者:alibli

来源:CSDN

原文:https://blog.csdn.net/weixin_36389889/article/details/125949031#%E6%A6%82%E8%BF%B0

版权声明:本文为作者原创文章,转载请附上博文链接!

内容解析By:CSDN,CNBLOG博客文章一键转载插件


目录
相关文章
|
4天前
AIDL原理
AIDL原理
10 0
|
4天前
AIDL中的in,out,inout
AIDL中的in,out,inout
12 0
|
4天前
|
Android开发
AIDL的使用
AIDL的使用
15 0
|
设计模式 Java Android开发
跨进程单例 | Andorid进程通信AIDL原理及应用
设计模式中的单例模式在多进程场景下会演变成多例,存在线程安全问题。本文通过跨进程通信机制让多进程共享单例。
346 0
【Binder 机制】AIDL 分析 ( AIDL 通信完整流程梳理 )
【Binder 机制】AIDL 分析 ( AIDL 通信完整流程梳理 )
227 0
|
Java Android开发 开发者
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )
101 0
|
Java Android开发 开发者
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )(一)
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )(一)
106 0
|
Android开发
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )(二)
【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )(二)
101 0
|
Java 网络协议 安全
彻底弄懂binder与aidl
aidl与binder机制 为什么需要binder 没有用到binder之前,我们每个app生活在分配给自己的虚拟机和内存空间中,这样保证了app应用的安全,到很多时候我们需要用到跨进程通信(IPC),这时binder就为此而生。
2182 0