ベンダー インターフェース オブジェクト

このドキュメントでは、ベンダー インターフェース オブジェクト(VINTF オブジェクト)の設計について説明します。このオブジェクトは、デバイスに関連する情報を集約し、クエリ可能な API でその情報を利用できるようにします。

VINTF オブジェクトの設計

VINTF オブジェクトは、必要とする情報の一部をデバイスから直接収集します。一方、マニフェストなどの他の要素は XML で静的に記述されます。

図 1. マニフェスト、互換性マトリックス、実行時に収集可能な情報

VINTF オブジェクトの設計では、デバイスとフレームワークのコンポーネントについて以下を行います。

デバイス フレームワーク
  • 静的コンポーネント(デバイス マニフェスト ファイル)のスキーマを定義します。
  • 特定のデバイスのデバイス マニフェスト ファイルを定義するためのビルド時サポートを追加します。
  • デバイス マニフェスト ファイル(およびその他の実行時に収集可能な情報)を取得してクエリ結果にパッケージングする、クエリ可能な API を実行時に定義します。

VINTF オブジェクトは信頼できるものでなければならず、いつオブジェクトがリクエストされても同一の完全な情報を提供する必要があります(注意事項を参照)。

マニフェストとマトリックス

Android 8.0 以降、ランタイム API はデバイス上の情報をクエリし、その情報を無線(OTA)アップデート サーバーや CTS DeviceInfo などに送信するようになりました。一部の情報は実行時に取得され、一部の情報は静的に定義されます。

  • デバイス マニフェストには、静的コンポーネント(デバイスがフレームワークに提供できるもの)が記述されます。
  • フレームワーク互換性マトリックスには、Android フレームワークが特定のデバイスに期待する情報が記述されます。マトリックスは静的エンティティです。その構成は、Android フレームワークの次回リリースの開発中に手動で決定されます。
  • フレームワーク マニフェストには、フレームワークがデバイスに提供できるハイレベルのサービスが記述されます。
  • デバイス互換性マトリックスには、ベンダー イメージがフレームワークについて必要とするサービスが記述されています。その構成は、デバイスの開発中に手動で決定されます。

OTA 時には、この 2 つのマニフェストとマトリックスのペアが整合性を持ち、デバイスの機能と互換性があるフレームワーク アップデートをデバイスが取得できるようにする必要があります。一般的に、マニフェストには何が提供されるかが記述され、互換性マトリックスには何が必要かが記述されます。

マニフェストとマトリックスの詳細については、以下のページで説明しています。

  • マニフェストでは、デバイス マニフェスト、フレームワーク マニフェスト、マニフェスト ファイルのスキーマを定義しています。
  • 互換性マトリックスでは、互換性マトリックスのスキーマを定義しています。
  • FCM ライフサイクルでは、HIDL HAL のサポート終了および削除の仕組みと、HAL バージョンのステータスを反映するために FCM ファイルを変更する方法について説明しています。
  • デバイス マニフェストの開発では、ベンダーが新しいデバイスのデバイス マニフェストでターゲット FCM バージョンを定義および宣言する方法を説明しています。また、古いデバイスのベンダー イメージをアップグレードする際に、新しい HAL バージョンを実装するかターゲット FCM バージョンをインクリメントする方法を説明しています。
  • マッチング ルールでは、互換性マトリックスとマニフェストが一致するためのルールを定義しています。