85 lines
2.7 KiB
Markdown
85 lines
2.7 KiB
Markdown
|
# VINTF Device Manifest
|
||
|
|
||
|
In Android Pie, an `<fqname>` tag was introduced to be able to express multiple
|
||
|
different versions of the same HAL in VINTF manifests (for DRM)
|
||
|
in device manifest. For devices launching with previous versions of Android and
|
||
|
upgrading to Android Pie, the device manifest must not use `<fqname>` to
|
||
|
satisfy requirements for non-optional HALs, because older version of `libvintf`
|
||
|
do not recognize it, causing errors during OTA update.
|
||
|
|
||
|
Assuming that the HAL provides `@1.0::I*/default`,
|
||
|
`@1.1::I*/clearkey` and `@1.1::I*/foo` instances:
|
||
|
|
||
|
## Devices upgrading to Android Pie
|
||
|
|
||
|
### `target-level=1` or `target-level=2`
|
||
|
|
||
|
FCM (framework compatibility matrix) version 2 (released in Android Oreo MR1)
|
||
|
requires DRM 1.0. If the new device manifest has Target FCM Version (i.e.
|
||
|
`target-level`) 1 or 2, it should use the following snippet:
|
||
|
|
||
|
```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>
|
||
|
```
|
||
|
|
||
|
### `target-level=3`
|
||
|
|
||
|
FCM (framework compatibility matrix) version 3 (released in Android Pie)
|
||
|
requires DRM 1.1. If the new device manifest has Target FCM Version (i.e.
|
||
|
`target-level`) 3, it should use the following snippet:
|
||
|
|
||
|
|
||
|
```xml
|
||
|
<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>
|
||
|
```
|
||
|
|
||
|
## Devices launching with Android Pie
|
||
|
If you have a new device launched with Android Pie (no OTA), both of the
|
||
|
aforementioned snippets can be used. Besides, it is recommended to use the
|
||
|
new, clearer format:
|
||
|
|
||
|
```xml
|
||
|
<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>
|
||
|
```
|