[Android]关于aidl

74 篇文章 1 订阅

aidl的基本数据格式,可以参考源码中的例子

system/tools/aidl/tests/android/aidl/tests/ITestService.aidl

52  SimpleParcelable RepeatSimpleParcelable(in SimpleParcelable input,
53                                          out SimpleParcelable repeat);
54  PersistableBundle RepeatPersistableBundle(in PersistableBundle input);
55
56  // Test that arrays work as parameters and return types.
57  boolean[] ReverseBoolean(in boolean[] input, out boolean[] repeated);
58  byte[]    ReverseByte   (in byte[]    input, out byte[]    repeated);
59  char[]    ReverseChar   (in char[]    input, out char[]    repeated);
60  int[]     ReverseInt    (in int[]     input, out int[]     repeated);
61  long[]    ReverseLong   (in long[]    input, out long[]    repeated);
62  float[]   ReverseFloat  (in float[]   input, out float[]   repeated);
63  double[]  ReverseDouble (in double[]  input, out double[]  repeated);
64  String[]  ReverseString (in String[]  input, out String[]  repeated);
65
66  SimpleParcelable[]  ReverseSimpleParcelables(in SimpleParcelable[] input,
67                                               out SimpleParcelable[] repeated);
68  PersistableBundle[] ReversePersistableBundles(
69      in PersistableBundle[] input, out PersistableBundle[] repeated);
70

对于自定义的类型,如果需要使用数组,在native层的aidl中,直接使用数组形式[]  即可,

使用List<ClassName>会不识别,报错。

java层的aidl使用比较常见,native层的使用可以参考

frameworks/av/camera/aidl/android/hardware/

里面的处理,如makefile文件(bp文件)里面的添加处理,

编译的时候,会通过可执行程序aidl(aidl-cpp)去根据aidl文件生成相应的接口文件。

 

可执行程序aidl(aidl-cpp)的源码在

/system/tools/aidl/

里面,使用了lex和yacc的编译解析处理,

生成的接口文件里的代码没有使用tab键解析对齐,这是个可以优化的地方

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值