AIDL是一套DSL,是一个配置文件,是一个编译器
DSL是:特定领域语言,protobuf、sqlite等就是DSL,还有gradle,gradle脚本。
app的打包流程:
sdk/aidl.exe-->.aidl-->java文件
aidl配置的是什么?
配置的是如何从生成java文件
AIDL有什么技术当中自己编写了aidl生成的Java文件,而不是直接利用aidl工具?
饿了么的hermes 爱奇艺的andromeda。
Proxy,它会持有一个对象,在bindersive的时候传了一个serviceconnection过去,回调一个IBinder,这个IBinder是Stub,服务端的实现,Stub的一个代理对象BinderProxy,并不会直接把C/S的Stub直接传给C端,而是会生成一个Stub的一个代理对象(代理模式),那怎么完成BinderProxy跟Stub的通信?1.transact,序列化对象传给服务端,把序列化的的装在Parcel里面transact方法第一个参数就是方法的ID,后面是参数,调起了transact之后,方法里面就会把我们的请求通过Binder发到了服务端,然后服务掉这边就会通过JNI调用native方法,再回调到onTransact(),onTransact()之后就会switch,按客户端发送过来的执行相应的代码,然后拆包,拿到序列化的数据。
6de6f082510cd827506fd8aafed0e66.jpg
网友评论