1. システムアーキテクチャ

1-1. システムアーキテクチャ概要

(1)Androidアーキテクチャの概要

   Androidアーキテクチャは、Linuxカーネル、Androidランタイム、ライブラリ、

   アプリケーションフレームワーク、アプリケーションから構成されています。

 

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社の許可が必要

   となります。