{% include "_versions.html" %}
When developing and releasing new devices, vendors can define and declare the Target FCM Version in the device manifest (DM). When upgrading the vendor image for old devices, vendors can choose to implement new HAL versions and increment the Target FCM Version.
When defining the device Target FCM Version for new devices:
DEVICE_MANIFEST_FILE
and
PRODUCT_ENFORCE_VINTF_MANIFEST
undefined.DEVICE_MANIFEST_FILE
.PRODUCT_ENFORCE_VINTF_MANIFEST
to true
.When a new device is released, its initial Target FCM Version needs to be
determined and declared in the device manifest as the
"target-level
" attribute in the top-level
<manifest>
element.
For example, devices launching with Android {{ androidPVersionNumber }} must have Target FCM Version equal to 3 (the higher version available at this time). To declare this in the device manifest:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
When upgrading the vendor image for an old device, vendors can choose to implement new HAL versions and increment the Target FCM Version.
During a vendor image upgrade, vendors can implement new HAL versions provided that HAL name, interface name, and instance name are the same. For example:
android.hardware.audio@2.0::IDeviceFactory/default
.android.hardware.audio@4.0::IDeviceFactory/default
.compatibility_matrix.2.xml
specifies audio 2.0
only, the requirement on a vendor image with Target FCM Version 2 has been
loosened because the Android {{ androidPVersionNumber }} framework (FCM Version
3) considers audio 4.0 a replacement of audio 2.0 HAL in terms of functionality.
To summarize, given that compatibility_matrix.2.xml
requires
audio 2.0 and compatibility_matrix.3.xml
requires audio 4.0, the
requirements are as follows:
FCM Version (System) | Target FCM Version (Vendor) | Requirements |
---|---|---|
2 (8.1) | 2 (8.1) | Audio 2.0 |
3 ({{ androidPVersionNumber }}) | 2 (8.1) | Audio 2.0 or 4.0 |
3 ({{ androidPVersionNumber }}) | 3 ({{ androidPVersionNumber }}) | Audio 4.0 |
During a vendor image upgrade, vendors can also increment the Target FCM Version to specify the targeted FCM Version the upgraded vendor image can work with. To bump the Target FCM Version of a device, vendors need to:
For example, Google Pixel and Pixel XL devices launched with Android 7.0
so their Target FCM Version must be at least legacy. However, the device
manifest declares the Target FCM Version 2 because the vendor image has
been updated to conform with compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
If vendors do not implement all required new HAL versions or do not remove deprecated HAL versions, the Target FCM Version cannot be upgraded.
For example, Google Pixel 2 and Pixel 2 XL devices have Target FCM Version 2.
While they do implement some HALs required by
compatibility_matrix.3.xml
(such as audio 4.0, health 2.0, etc.),
they do not remove android.hardware.radio.deprecated@1.0
, which is
deprecated at FCM Version 3 (Android {{ androidPVersionNumber }}). Hence, these
devices cannot upgrade the Target FCM Version to 3.