Android在定义一个HAL时需要用manifest.xml来申明。
Andoird P及之后版本引入了<fqname>标签用来解决不同版本不通HAL instance的问题
例如下面的XML
<hal format="hidl">
<name>android.hardware.drm</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>ICryptoFactory</name>
<instance>default</instance>
</interface>
<interface>
<name>IDrmFactory</name>
<instance>default</instance>
</interface>
<fqname>@1.1::ICryptoFactory/clearkey</fqname>
<fqname>@1.1::IDrmFactory/clearkey</fqname>
<fqname>@1.1::ICryptoFactory/foo</fqname>
<fqname>@1.1::IDrmFactory/foo</fqname>
</hal>
可以利用fqname标签申明version 1.1::ICryptoFactory本的servicename为clearkey的instance
同时申明version 1.0名servicename为default的instance
也可以如下表示
<hal format="hidl">
<name>android.hardware.drm</name>
<transport>hwbinder</transport>
<version>1.1</version>
<interface>
<name>ICryptoFactory</name>
<instance>clearkey</instance>
<instance>foo</instance>
</interface>
<interface>
<name>IDrmFactory</name>
<instance>clearkey</instance>
<instance>foo</instance>
</interface>
<fqname>@1.0::ICryptoFactory/default</fqname>
<fqname>@1.0::IDrmFactory/default</fqname>
</hal>
也可以如下表示
<hal format="hidl">
<name>android.hardware.drm</name>
<transport>hwbinder</transport>
<fqname>@1.0::ICryptoFactory/default</fqname>
<fqname>@1.0::IDrmFactory/default</fqname>
<fqname>@1.1::ICryptoFactory/clearkey</fqname>
<fqname>@1.1::IDrmFactory/clearkey</fqname>
<fqname>@1.1::ICryptoFactory/foo</fqname>
<fqname>@1.1::IDrmFactory/foo</fqname>
</hal>