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

このドキュメントでは、ベンダー インターフェース オブジェクト(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 バージョンをインクリメントする方法を説明しています。
  • マッチング ルールでは、互換性マトリックスとマニフェストが一致するためのルールを定義しています。