アーキテクチャの概要

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

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

AOSP アーキテクチャ

AOSP のソフトウェア スタックには次の層が含まれています。

AOSP ソフトウェア スタック アーキテクチャ。

図 1. AOSP ソフトウェア スタック アーキテクチャ。

以下は、図 1 で使用される用語の定義のリストです。

Androidアプリ
Android APIのみを使用して作成されたアプリ。 Google Play ストアは Android アプリを検索してダウンロードするために広く使用されていますが、他にも多くの代替手段があります。場合によっては、デバイスのメーカーは、デバイスのコア機能をサポートするために Android アプリをプレインストールしたい場合があります。 Android アプリの開発に興味がある場合は、 developers.android.comを参照してください。
特権アプリ
Android とシステム API を組み合わせて作成されたアプリ。これらのアプリは、特権アプリとしてデバイスにプレインストールする必要があります。
デバイスメーカーのアプリ
Android API、システム API、および Android フレームワーク実装への直接アクセスを組み合わせて使用​​して作成されたアプリ。デバイスのメーカーは Android フレームワーク内の不安定な API に直接アクセスする可能性があるため、これらのアプリはデバイスにプレインストールする必要があり、デバイスのシステム ソフトウェアが更新される場合にのみ更新できます。
システムAPI
システム API は、バンドルされたアプリケーションに含めるためにパートナーおよび OEM のみが利用できる Android API を表します。これらの API は、ソース コード内で @SystemApi としてマークされます。
Android API
Android API は、サードパーティの Android アプリ開発者向けに公開されている API です。 Android API については、 「 Android API リファレンス 」を参照してください。
Android フレームワーク
アプリの構築に使用される Java クラス、インターフェイス、およびその他のプリコンパイル済みコードのグループ。フレームワークの一部は、Android API を使用して公的にアクセスできます。フレームワークの他の部分は、システム API を使用して OEM のみが利用できます。 Android フレームワークのコードは、アプリのプロセス内で実行されます。
システムサービス
システム サービスは、 system_server 、 SurfaceFlinger、MediaService などのモジュール式の焦点を絞ったコンポーネントです。 Android フレームワーク API によって公開される機能は、システム サービスと通信して、基盤となるハードウェアにアクセスします。
Android ランタイム (ART)
AOSP が提供する Java 実行環境。 ART は、アプリのバイトコードを、デバイスのランタイム環境によって実行されるプロセッサ固有の命令に変換します。
ハードウェア抽象化レイヤー (HAL)
HAL は、ハードウェア ベンダーが実装するための標準インターフェイスを備えた抽象化レイヤーです。 HAL を使用すると、Android は下位レベルのドライバーの実装に依存しなくなります。 HAL を使用すると、上位レベルのシステムに影響を与えたり変更したりすることなく機能を実装できます。詳細については、 「HAL の概要」を参照してください。
ネイティブデーモンとライブラリ

この層のネイティブ デーモンには、 inithealthdlogdstoragedが含まれます。これらのデーモンは、カーネルまたは他のインターフェイスと直接対話し、ユーザースペースベースの HAL 実装には依存しません。

この層のネイティブ ライブラリには、 libclibloglibutilslibbinder 、およびlibselinuxが含まれます。これらのネイティブ ライブラリは、カーネルまたは他のインターフェイスと直接対話し、ユーザー空間ベースの HAL 実装には依存しません。

カーネル

カーネルはオペレーティング システムの中心部分であり、デバイス上の基盤となるハードウェアと通信します。可能な場合、AOSP カーネルはハードウェアに依存しないモジュールとベンダー固有のモジュールに分割されます。 AOSP カーネル コンポーネントの定義を含む説明については、 「 カーネルの概要 」を参照してください。

次は何ですか?

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