最終更新日:
Android(携帯機器向けOS)の概要。
概要
Andoroidの構成は以下のようなレイヤー構成になっている(参考: http://developer.android.com/guide/basics/what-is-android.html):
注:現在の最新バージョンである1.5をベースに説明しています。2.0(Donut)については、ここでは説明をしていません。
アプリケーション層 | アプリケーション・フレームワーク層を使って、機能別のアプリケーションを実装する。 |
アプリケーション・フレームワーク層 | ウィンドウマネージャ、コンテント・プロバイダ、ビューシステム、リソースマネージャなどが含まれる。 MVCパターンになっている模様。アプリケーション層のベース(フレームワーク)となる。 |
アンドロイド・ランタイム層 | DalvikというJava VMとコア・ライブラリから成る。これにより、アプリケーション層、アプリケーション・フレームワーク層が動作する。 |
ライブラリ層 | OpenGL/ES、SQLite、libc、などのミドルウェア、汎用ライブラリが含まれる。 |
Linuxカーネル層 | Linuxカーネル2.6をベースとしている。ディスプレイドライバ、カメラドライバ、キーパッドドライバ、WiFiドライバ、バインダー(プロセス間通信)ドライバ、などが含まれる。 |
【参考】
Androidの概要と組込みへの応用 : http://www.linuxcons.jp/modules/seminar/
アライアンス(共同)
Open Handset Alliance (OHA)と呼ばれるアライアンスを組んでいる。NTT/KDDIなどのMobile Operators、MOTOROLA/SAMSUNG/LGのようなHandset Manufactures、Intel/Qualcomm/TIなどの Semiconductor、ebay/GoogleなどのSoftware、WindliverなどのCommercialization、からなる。
携帯電話関連メーカーを中心に広く共同戦線を張っている様子。
ライセンス
これまでの携帯機器の開発環境では、OperaブラウザやMIDIなど、機能ごとにライセンス取得をする必要があったが、 Androidでは1つのライセンスに集約している。これにより法的手続きの簡略化・短縮が実現できる。
独自のJava VMであるDalvik VMを開発したのも、Sunとのライセンス問題を回避するため、 という見方もある(別の見方としては、単に技術的な問題を解決するため、というものがある模様)。 なお、Androidのプレゼンテーションでも「Javaは開発言語のひとつである」と話している。 J2MEと98%くらいの互換はあるのではないか、とも話している。
AndroidはApache Licence 2.0を採用している。 そのため自社開発したアプリケーションのソースコードをOHAに提供する必要がなく、商業化しやすい。 Androidをベースに機能追加・機能削除を行うことができる。 また、組み込み型ハードウェアメーカー各社が自社のハードウェアの仕様を公開する必要が無くなる。 ただし、ハードウェア仕様が公開されないと、より優れた高性能なドライバを開発するのは難しくなってしまう。
参考:
- GPL:変更した場合、ソースコード開示が必要。LinuxカーネルもGPL。
- LGPL:ライブラリ用。商用利用に対する制約が緩やか。
- BSD:ほとんど制約が無い。
- FPL:LiMo Foundationによるオープンソース方式と商用ライセンス方式を融合したもの。
ソースコードの入手
Android Open Source Projectから入手してください。 Linux用の構成管理ツールGIT(ギット)を使います。 プロジェクト単位でスナップショット(tar.gz)を取得することができます。
プロジェクトには以下のようなものがあります:
- kernel/common.git: 共通のAndroidのKernel
- platform/bionic.git: libc、libm、libdl、dynamic linker。カスタイムライブラリ。動的ロードをサポートしている。
- platform/bootloader/legacy.git: ブートローダー
- platform/dalvik.git: Dalvik VM
- platform/frameworks/base.git: フレームワークのクラスやサービス。Java/C/C++で実装されている。 C/C++で実装されたコードはJNI(Java Native Interface)を経由してJavaクラスから呼び出せるようにしている。 たとえば、OpenGLのコードはC/C++で実装されていて、それをJavaから呼び出せるようにしている。
なお、ソースコード全体をビルドするには、10GBくらいのスペースが必要。また、Androidプロジェクトでは、Ubuntu Linux上でビルドの確認をしている。
【参考】
- Inside the Android Application Framework: YouTubeに投稿されているAndroidの公式動画。フレームワークの説明をしてくれている。 イベント・プロセス・スレッドの概念や、プロセス間通信の方法についての説明がある。
- The first impression of Android source code:ソースコードツリーを見た印象。初期ターゲットはQualcomm MSM7Kだったが、現在(2008年11月10日)のターゲットはARM926以降。
実機での動作例
【2007年12月21日】
2007年12月21日のCE Linuxフォーラムで、富士通ソフトウェアテクノロジーズにより、i.MX31 (ARM11 532MHz)でAndroidを動作させた。
3次元動画表示のようなアプリケーションが、H/Wアクセラレータなしに思ったよりも軽く動いている印象を受けた。
Androidを実機上で動かした、CE Linuxフォーラムのイベントで実演
【2008年11月20日】
MontaVistaがTexas InstrumentsのOMAP3上で動作するMontaVista版Androidのデモを行った。
MontaVistaはLinux2.6をMobilinuxに置き換え、Android上で動作するように対応した。
Moblinuxは、電源管理、リアルタイム性能、高速起動などの特徴を備えている。
【ET2008】MontaVista社のモバイル向けLinuxが「Android」に対応
評価ボードでの動作例
BeagleBoardというTIのOMAP3530が搭載されている評価ボードがある。
データシートがオープンになっているので、誰でもBSPを作ることができる。
構成は、
- OMAP 3530 (ARM Cortex-A8 600MHz, C64x DSP + グラフィックアクセラレータ)
- 128MB SDRAM
- 256MB NANDフラッシュメモリ (HDDの代わり)
- USB2.0 OTG
- USB EHCI Host
- DVI出力
- SDカードスロット
- 10pinシリアルコネクタ(RSC232Cを接続可能)
Androidの動作実績もある。
Androidの導入傾向
【2009年4月1日】HPなどのPCメーカーが、ミニノートPCにAndroidを搭載しようと検討している。 Androidが持つコンピュータ業界、通信業界向けの機能を評価したいと思っている模様。 GoogleはAndroidから利益を得ていない。AndroidはLinuxを基盤としており、無料で提供されている。 PCデスクトップにおけるMicrosoftの勢力を削ぐというメリットがある。
Androidの参考情報
Google I/O 2009 : 2009年5月27日~28日にサンフランシスコで開催された2009カンフェレンスの動画。 Googleの最新状況についての説明。