设备清单生成

在开发和发布新设备时,供应商可以在设备清单 (DM) 中定义和声明目标 FCM 版本。升级旧设备的供应商映像时,供应商可以选择实现新的 HAL 版本并递增目标 FCM 版本。

开发新设备

在为新设备定义设备目标 FCM 版本时:

  1. 不要定义 DEVICE_MANIFEST_FILEPRODUCT_ENFORCE_VINTF_MANIFEST
  2. 为目标 FCM 版本实现 HAL。
  3. 编写正确的设备清单文件。
  4. 将目标 FCM 版本写入设备清单文件。
  5. 设置 DEVICE_MANIFEST_FILE
  6. PRODUCT_ENFORCE_VINTF_MANIFEST 设置为 true

发布新设备

发布新设备时,需要确定设备的初始目标 FCM 版本,并在设备清单中通过顶级 <manifest> 元素中的“target-level”属性予以声明。

例如,搭载 Android 9 的设备的目标 FCM 版本必须为 3(目前已提供更高版本)。您可通过以下命令在设备清单中予以声明:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

升级供应商映像

升级旧设备的供应商映像时,供应商可以选择实现新的 HAL 版本并递增目标 FCM 版本。

升级 HAL

在供应商映像升级期间,供应商可以实现新的 HAL 版本,前提是 HAL 名称、接口名称和实例名称均相同。例如:

  • Google Pixel 2 和 Pixel 2 XL 设备发布时目标 FCM 版本为 2,实现了所需的音频 2.0 HAL android.hardware.audio@2.0::IDeviceFactory/default
  • 对于随 Android 9 发布的音频 4.0 HAL,Google Pixel 2 和 Pixel 2 XL 设备可以通过完整 OTA 升级至 4.0 HAL,其中实现了 android.hardware.audio@4.0::IDeviceFactory/default
  • 尽管 compatibility_matrix.2.xml 仅指定了音频 2.0,但由于 Android 9 框架(FCM 版本为 3)认为音频 4.0 在功能方面可以替代音频 2.0 HAL,因此对采用目标 FCM 版本 2 的供应商映像的要求已放宽。

简而言之,鉴于 compatibility_matrix.2.xml 需要音频 2.0,而 compatibility_matrix.3.xml 需要音频 4.0,应遵循以下要求:

FCM 版本(系统) 目标 FCM 版本(供应商) 要求
2 (8.1) 2 (8.1) 音频 2.0
3 (9) 2 (8.1) 音频 2.0 或 4.0
3 (9) 3 (9) 音频 4.0

升级目标 FCM 版本

在供应商映像升级期间,供应商还可以递增目标 FCM 版本,以指定可与升级后的供应商映像配合使用的目标 FCM 版本。要达到设备的目标 FCM 版本,供应商需要:

  1. 为目标 FCM 版本实现所有需要的新 HAL 版本。
  2. 在设备清单文件中修改 HAL 版本。
  3. 在设备清单文件中修改目标 FCM 版本。
  4. 移除已弃用的 HAL 版本。
  5. 对于搭载版本 9 或更低版本的设备,先择优挑选以下 CL,然后再生成 OTA 更新程序包:

例如,Google Pixel 和 Pixel XL 设备搭载的是 Android 7.0,因此它们的目标 FCM 版本一定至少是旧版。不过,设备清单中声明了目标 FCM 版本为 2,这是因为供应商映像已更新,以符合 compatibility_matrix.2.xml

<manifest version="1.0" type="device" target-level="2">

如果供应商未实现所有需要的新 HAL 版本或未移除弃用的 HAL 版本,则无法升级目标 FCM 版本。

例如,Google Pixel 2 和 Pixel 2 XL 设备采用的是目标 FCM 版本 2。虽然它们实现了 compatibility_matrix.3.xml 所需的一些 HAL(例如音频 4.0、health 2.0 等),但未移除在 FCM 版本 3 (Android 9) 中弃用的 android.hardware.radio.deprecated@1.0。因此,这些设备无法将目标 FCM 版本升级至 3。