Skip to content

Most visited

Recently visited

navigation

プラットフォーム アーキテクチャ

Android はさまざまな端末やフォーム ファクタのために作られた、オープンソースかつ、Linux ベースのソフトウェア スタックです。Android プラットフォームの主なコンポーネントを図に示します。

図 1. Android ソフトウェア スタック

Linux Kernel

Android プラットフォームの基盤は Linux kernel です。例えばAndroid ランタイム(ART)は、スレッドや低レベルのメモリの管理などの基本機能を Linux kernel に依存しています。

Linux kernel を使うことで、Android は主要なセキュリティ機能を活用でき、端末メーカーは有名なカーネル向けのハードウェア ドライバを開発できます。

Hardware Abstraction Layer(HAL)

HAL(Hardware Abstraction Layer)の標準インターフェースにより、端末のハードウェア機能はハイレベルの Java API フレームワークに対応できます。HAL は複数のライブラリ モジュールで構成され、一つ一つが特定のタイプのハードウェア コンポーネントに対応するインターフェースを提供しています。例えば、カメラBluetooth モジュールなどです。フレームワーク API が端末ハードウェアにアクセスを要求すると、Android システムがそのハードウェア コンポーネントのライブラリ モジュールを読み込みます。

Android ランタイム

Android バージョン 5.0(API レベル 21)以降の端末では、それぞれのアプリが独自のAndroid ランタイム(ART)のインスタンスを使用して、独自のプロセスで実行されます。DEX ファイルを実行すると、低メモリ端末上で複数の仮想マシンを走らせるために ART が書き込まれます。DEX ファイルは、Android 専用に設計されたバイトコード形式のファイルで、メモリ フットプリントが最小限になるよう最適化されています。Jack などのツールチェーンを作成して、Java ソースを Android プラットフォームで動かせる DEX バイトコードにコンパイルします。

ART の主な機能を幾つかご紹介します。

Android version 5.0(API レベル 21)以前は、Dalvik が Android ランタイムの役割を担っていました。アプリが ART 上で問題なく動いていれば、Dalvik でも動くはずですが、その逆は動くとは限りません

Android にはJava 8 の言語機能 など Java API フレームワークが使用する Java プログラミング言語の機能をほぼすべて網羅する主要なランタイム ライブラリがあります。

ネイティブ C/C++ 言語 ライブラリ

ART や HAL などの主要な Android システム コンポーネントやサービスの多くは、C 言語や C++ 言語で書かれたネイティブ ライブラリを要求するネイティブコードで構築されています。Android プラットフォームは、こうしたネイティブ ライブラリの機能をアプリに使ってもらうために Java フレームワーク API を提供しています。例えば、アプリで 2D/3D グラフィックの描画や操作を行えるようにサポートを追加するには、Android フレームワークの Java OpenGL API を経由して、OpenGL ES にアクセスします。

C 言語や C++ 言語コードが必要なアプリを開発している場合は、Android NDK を使うとネイティブ コードから直接ネイティブ プラットフォーム ライブラリにアクセスできます。

Java API フレームワーク

Java 言語で書かれた API を利用すると、Android OS の機能をすべて使うことができます。これらの API は主要なモジュラーシステム コンポーネントやサービスの再利用を簡略化し、以下のものを含む Android アプリの作成に必要なビルディング ブロックを構成します。

デベロッパーは Android システム アプリが使用するのとまったく同じ framework API をすべて利用できます。

システムアプリ

Android には E メール、SMS メッセージ、カレンダー、インターネットのブラウジング、連絡先など、一連の主要なアプリが搭載されています。プラットフォームに含まれているアプリは、ユーザーが自らインストールしたアプリに比べて特別であるわけではありません。そのため、サードパーティのアプリをユーザーのデフォルトのウェブブラウザ、SMS メッセージ、デフォルトのキーボードすることが可能です(システム設定アプリなどいくつか例外はあります)。

システムアプリは、ユーザーにとってのアプリ機能に加え、デベロッパーが自身のアプリからアクセスできる主要機能を提供します。例えば、自身のアプリで SMS メッセージを送りたい場合、その機能を自らビルドする必要はありません。代わりにすでにインストールされている SMS アプリを呼び出せば、指定した相手にメッセージを送信できます。

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.