AOSP アーキテクチャ

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Android オープン システム プラットフォーム (AOSP)は、公開されており、変更可能な Android ソース コードです。誰でも自分のデバイス用に AOSP をダウンロードして変更できます。 AOSP は、Android モバイル プラットフォームの完全かつ完全に機能する実装を提供します。

AOSP を実装するデバイスには、AOSP 互換性と Android 互換性の 2 つのレベルの互換性があります。 AOSP 互換デバイスは、 Compatibility Definition Document (CDD)の要件リストに準拠する必要があります。 Android 互換デバイスは、CDD およびベンダー ソフトウェア要件 (VSR) の要件リストと、ベンダー テスト スイート (VTS)互換性テスト スイート (CTS)などのテストに準拠する必要があります。 Android 互換性の詳細については、 Android 互換性プログラムを参照してください。

AOSP アーキテクチャ

AOSP のソフトウェア スタックには、次のレイヤーが含まれています。

AOSP ソフトウェア スタック アーキテクチャ
図 1. AOSP ソフトウェア スタック アーキテクチャ。
  • アンドロイドアプリ。 Android SDK 内の Android API のみを使用して作成されたアプリ。 Google Play ストアは、Android アプリを見つけてダウンロードするために広く使用されていますが、他にも多くの代替手段があります。場合によっては、デバイス メーカーが、デバイスのコア機能をサポートするために Android アプリをプレインストールすることを希望することがあります。 Android アプリの開発に興味がある場合は、 developers.android.comに進んでください。
  • 特権アプリ。 Android API とシステム API の組み合わせを使用して作成されたアプリ。これらのアプリは、特権アプリとしてデバイスにプリインストールする必要があります。
  • デバイス製造アプリ。 Android API、システム API、および Android フレームワーク実装への直接アクセスの組み合わせを使用して作成されたアプリ。デバイス メーカーは Android フレームワーク内の不安定な API に直接アクセスする可能性があるため、これらのアプリはデバイスにプリインストールする必要があり、デバイスのシステム ソフトウェアが更新された場合にのみ更新できます。
  • Android フレームワーク。アプリの構築に使用される Java クラス、インターフェイス、およびその他のプリコンパイル済みコードのグループ。フレームワークの一部は、Android SDK の Android API を使用して公開されています。フレームワークの他の部分は、Android SDK のシステム API を使用して OEM のみが利用できます。 Android フレームワーク コードは、アプリのプロセス内で実行されます。
  • Android SDK。 Android フレームワークとやり取りするアプリの作成に使用するソフトウェア開発キット。 Android SDK は、すべてのアプリで使用できる Android API と、特権アプリでのみ使用できるシステム API で構成されています。 Android SDK の Android API の詳細については、 developers.android.comに進んでください。ネイティブ コードを使用して Android アプリの一部を作成できるAndroid ネイティブ開発キット (NDK)もあります。
  • システム サービス。システム サービスは、 system_server 、 SurfaceFlinger 、 MediaService などのモジュール化された集中コンポーネントです。 Android フレームワーク API によって公開される機能は、システム サービスと通信して、基盤となるハードウェアにアクセスします。
  • Android ランタイム (ART)。 AOSPが提供するJavaアプリケーション実行環境。 ART は、アプリケーションのバイトコードを、デバイスのランタイム環境によって実行されるプロセッサ固有の命令に変換します。
  • ハードウェア抽象化レイヤー (HAL)。 HAL は、ハードウェア ベンダーが実装する標準インターフェイスを備えた抽象化レイヤーです。 HAL を使用すると、Android は下位レベルのドライバーの実装に依存しなくなります。 HAL を使用すると、上位レベルのシステムに影響を与えたり変更したりせずに機能を実装できます。
  • 詳細については、 HAL の概要を参照してください。
  • ネイティブのデーモンとライブラリ。このレイヤーのネイティブ デーモンには、 inithealthdlogd 、およびstoragedが含まれます。これらのデーモンは、カーネルまたは他のインターフェースと直接対話し、ユーザー空間ベースの HAL 実装に依存しません。この層のネイティブ ライブラリには、 libclibloglibutilslibbinder 、およびlibselinuxが含まれます。これらのネイティブ ライブラリは、カーネルまたは他のインターフェイスと直接対話し、ユーザー空間ベースの HAL 実装に依存しません。
  • カーネル。オペレーティング システムの中心部分であるカーネルは、デバイスの基盤となるハードウェアと通信します。可能な場合、AOSP カーネルは、ハードウェアに依存しないモジュールとベンダー固有のモジュールに分割されます。 AOSP カーネル コンポーネントの定義を含む説明については、「カーネルの概要」を参照してください。

次は何ですか?

  • AOSP を初めて使用し、開発を開始したい場合は、「はじめに」セクションに進んでください
  • AOSP の特定のレイヤーについて詳しく知りたい場合は、左側のナビゲーションでレイヤーの名前をクリックし、そのレイヤーの概要から始めてください。