Native层调用Java层定义的AIDL接口

之前负责java层某service的开发找我说希望可以通过我这边(我们之间有HIDL接口)通知另一个Native进程状态。

问过领导说是JAVA层定义的AIDL的接口C++层也可以用,不需要经过我这边通知。

所以我这边也尝试一下。

Android11,Java层作为服务端定义了AIDL接口,Native C++层作为客户端。

1.由于服务端只是在bp里面将aidl做为src参与编译,没有生成C++代码,所以我按照服务端的目录结构,在客户端这边创建同样的目录结构,并将aidl文件拷贝过来,作为src在bp中添加才可以编译。

2.由于我的服务编译生成在VENDOR,做完之后遇到的问题是一直查询不到Java层的service,日志显示servicemanager wait for service xxx on /dev/vndbinder

3.没办法只能将进程编译生成到SYSTEM,这次可以查询到Java层的service,但是注册的监听,一直收不到回调,service端打印也都回调了,后来加了下面才能收到回调。

sp<ProcessState> proc(ProcessState::self());

    ProcessState::self()->startThreadPool();
    IPCThreadState::self()->joinThreadPool();

之前这个NativeTest程序是做HIDL接口测试的,上面的加了之后一直编译报错就没加,后来把HIDL都删了,只保留了AIDL的,再加上上面才能编译通过,并接收到回调。

下一步尝试将Native Test生成到VENDOR.并可以访问JAVA侧的AIDL接口,根据查的资料应该要用稳定的AIDL,需要改造现有service端的AIDL接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值