1. システムアーキテクチャ
1-1. システムアーキテクチャ概要
(1)Androidアーキテクチャの概要
Androidアーキテクチャは、Linuxカーネル、Androidランタイム、ライブラリ、
アプリケーションフレームワーク、アプリケーションから構成されています。
※ Androidのアーキテクチャは、Linux2.6カーネルをベースにしている。
(2)Androidランタイム
Androidランタイムは、「Dalvik仮想マシン」と「Javaコアパッケージ」から
構成されています。
Dalvik仮想マシンは、以下のような特徴を持ちます。
・メモリ容量が小さい環境向けにGoogleが開発した仮想マシンである
・実行可能形式ファイルとしてDalvikバイトコード(dexファイル)を実行する
・DalvikバイトコードをLinuxで実行可能な形式に変換して実行する
・複数の仮想マシンのインスタンスが動作するように設計されている
Androidは、Javaコアライブラリの多くの機能をサポートしており、それらは
Java SE(Java Platform, Standard Edition)に準拠しています。
(3)ライブラリ
Androidが提供する主なライブラリは次のとおりである。
SystemCライブラリ | Cの標準システムライブラリ(libc) |
Media Framework | オーディオやビデオの操作をサポートするライブラリ |
Surface Manager |
複数アプリケーションの2D/3Dグラフィックスの統合を サポートするライブラリ |
LibWebCore(WebKit) | ブラウザと埋め込みビューをサポートするブラウザエンジン |
SGL | 2Dグラフィックスエンジン |
3Dライブラリ | OpenGL ESをベースとした3Dグラフィックスエンジン |
FreeType | ビットマップやベクタフォントのレンダリングライブラリ |
SQLite | リレーショナルデータベースエンジン |
SSL |
SSLライブラリ |
(4)アプリケーションフレームワーク
Androidアーキテクチャにおけるアプリケーションフレームワークは、
アプリケーションの開発に必要な機能(ライブラリにアクセスするためのAPI)
を提供します。
Activity Manager |
Activityの管理 (アプリケーションのライフサイクルを管理) |
Window Manager |
ウィンドウの管理 (画面の状態を制御する機能を提供) |
Content Providers |
データ共有の管理 (アプリケーション間で共有するデータを管理) |
View System |
ユーザインタフェースの管理 (ボタンやテキストボックスなど、アプリケーション 構築に使用できるウィジェットのセット) |
Package manager |
インストールの管理 (端末内のアプリケーションを管理する機能を提供) |
Telephony Manager |
電話機能の管理 (電話機能へのアクセス) |
Resource Manager |
リソースの管理 (文字列、グラフィックス、レイアウトファイルなど のリソースへのアクセス) |
Location Manager |
位置情報の管理 (GPSが取得する位置情報へのアクセス) |
Notification Manager |
アラートの管理 (イベントの発生を知らせるアラート機能など) |
(5)Androidアプリケーション
Androidのソースコードは基本的にJavaで記述します。
これをclassファイルにコンパイルした後にdxコマンドでDalvikバイトコード
(dexファイル)に変換し、Dalvik仮想マシン(メモリ環境に最適化されたレジスタ
ベースの仮想マシンであり、高速な実行が可能)上で実行されます。
Androidアプリケーションは個別のプロセスで実行され、プロセス毎に専用の
仮想マシンが割り当てられます。デフォルトでは、アプリケーション毎に固有
のLinuxユーザIDが割り当てられ、アプリケーションで利用するファイルは、
他のアプリケーションからは認識できません。
アプリケーション間でファイルを相互に認識させたい場合は、同じユーザIDを
共有することで可能となります。
(6)APIレベル
API Levelとは、Androidプラットフォームの各バージョンのAPIを一意に識別
する値です。
Androidの最初のバージョン(Android 1.0)のAPI Levelは "1" から始まり、
マイナーバージョンを含め、Androidがバージョンアップするたびに1ずつ加算
されまる。
Androidの各バージョンはある1つのAPI Levelに対応していますが、それ以前の
API Levelも暗黙的にサポートしています。
バージョン | API Level | バージョン | API Level |
Android 1.0 | 1 | Android 2.3/2.3.1/2.3.2 | 9 |
Android 1.1 |
2 |
Android 2.3.3/2.3.4 | 10 |
Android 1.5 | 3 | Android 3.0 | 11 |
Android 1.6 | 4 | Android 3.1 | 12 |
Android 2.0 | 5 | Android 3.2 | 13 |
Android 2.0.1 | 6 | Android 4.0/4.0.1/4.0.2 | 14 |
Android 2.1 | 7 | Android 4.0.3 | 15 |
Android 2.2 | 8 |
1-2. ライセンス形態
(1)Androidのライセンス形態
AndroidはApache License 2.0により公開されているため、開発した
アプリケーションはApache License 2.0を適用でき、ソースコードを公開
する必要はありません。
Android上でアプリケーションを開発するには、アプリケーションの有償・
無償にかかわらず、登録する必要もライセンス費用を支払う必要もありません
が、開発したアプリケーションをGoogle Playで公開するには登録が必要です
(登録費用25ドル)。
Androidのソースコードは、Apache License 2.0とBSD Licenseに準じ、
改変可能です。
(2)GPLライセンス
AndroidのLinuxカーネル部分とそのライブラリに関してはGNU GPLで保護
されており、改変して商用としてリリースする場合は、ソースコードを公開
しなければなりません。
Gmail、Google Talk、Google Maps等のGoogleアプリケーションの著作権
はGoogle社に帰属するため、使用・改変・複製にはGoogle社の許可が必要
となります。