# VINTF Device Manifest In Android Pie, an `` 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 `` 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 android.hardware.drm hwbinder 1.0 ICryptoFactory default IDrmFactory default @1.1::ICryptoFactory/clearkey @1.1::IDrmFactory/clearkey @1.1::ICryptoFactory/foo @1.1::IDrmFactory/foo ``` ### `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 android.hardware.drm hwbinder 1.1 ICryptoFactory clearkey foo IDrmFactory clearkey foo @1.0::ICryptoFactory/default @1.0::IDrmFactory/default ``` ## 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 android.hardware.drm hwbinder @1.0::ICryptoFactory/default @1.0::IDrmFactory/default @1.1::ICryptoFactory/clearkey @1.1::IDrmFactory/clearkey @1.1::ICryptoFactory/foo @1.1::IDrmFactory/foo ```