首页 > 解决方案 > HIDL 接口继承

问题描述

我正在尝试扩展 HAL 功能的实现。似乎一旦发布了 HAL 接口,我们就无法在该版本中进行任何更改。所以我尝试通过参考这里https://source.android.com/devices/architecture/hidl-java#extensions来进行接口继承。

IA.HAL 文件

interface IA{
Amethod();
};

ClientService.Java 文件

IA ia = IA.getService(true);
//ia is not null. Working fine

对于扩展,我创建了一个新的 HAL 文件,其中涉及接口继承,如下所示。

IB.HAL 文件

import IA;
interface IB extends IA{
Bmethod()
};

ClientService.Java 文件

IA ia = IA.getService(true);
//ia is not null. Working fine
IB ib = IB.castFrom(ia);
**// ib is null. Issue**

知道我做错了什么。提前致谢。

标签: androidinheritancehalhidl

解决方案


HAL 服务器由其接口名称和实例名称标识。难道提供的服务器IA还在运行?

您目前可能有以下设置:

二进制 界面 实例
/system/bin/ia-service IA "default"
/vendor/bin/ib-service IB "default"

的默认值getService"default"用作实例。

解决方案:

  1. 确保ia-service没有启动。
  2. 通过在您的客户端中"new"调用并使用 ```getService("new", true)```` 获取实例,为您的 HAL 提供一个新的实例名称(例如)。registerAsService("new")ib-service

推荐阅读