目次
Android OSとは
Google が開発している、携帯情報端末向けのプラットフォームです。
オープンソースで開発されており、GitHub:android にプロジェクトが公開されています。
アーキテクチャ
Android プラットフォームのアーキテクチャは下記のようになっています。
Linux をベースとした OS(Kernel) の上に、標準ライブラリや Android ランタイムなどのミドルウェアが乗っています。
さらに、ミドルウェアを抽象化したレイヤとして、アプリケーションフレームワーク( Android Framework )のレイヤが提供されています。
私達が普段開発するアプリケーションは、この図の最上位のレイヤに位置づけられ、アプリケーションフレームワークを使いながらアプリケーションを開発していくことになります。
DalvikVMとART(Android Runtime)
Android 4.4まで、Android アプリは、Android ランタイムの DalvikVM の上で動作するようになっていました。
開発に使用する言語は Java が公式にサポートされています。この他、Scala などの Java プラットフォーム上で動作する言語も使用出来ます。
DalvikVM は、メモリ搭載量の少ない携帯端末向けに最適化された(主にメモリ使用量を減らした) JavaVM と云われることもありますが、 公式の JavaVM(SunVM)と互換性がないものが含まれていたり、DalvikVMの実行するバイトコードが JavaVM のそれと異なるものになっていたりします。
また、Android 5以降はDalvikはARTに置き換えられました。大きな変更点はJIT(実行時コンパイル)からAOTコンパイル(ahead of time)への移行、ガベージコレクタの改善、デバッグ効率の改善などが挙げられます。
これらの変更により、実行速度や開発効率の改善を実現しています。
ただしAOTコンパイルについては、アプリのインストールやアップデートを一度に大量に行う場合、コンパイル時間が長くなってしまうことが問題視され、Android Nでは初回起動時にコンパイルするようになる予定です。
レジスタベース
SunVM はスタックマシンであるのに対し、ARTやDalvikVM はレジスタマシンです。
dex
通常の Java では、javac
コマンドでソースコードをコンパイルすると、クラスファイルが生成されます。
このクラスファイルを、SunVM が解釈することでプログラムを実行しています。
Android では、VM の特性が異なるため、もう一段階処理を施し、クラスファイルを ARTやDalvikVM で動作可能なようにします。
この結果生成されるファイルが、dex ファイルです。
通常、これらの差異をプログラマが意識することはありませんが、一部 Java で一般的なイディオムと異なるものが存在します。
バージョン
バージョン毎、提供される API にも差異があります。
基本的には、新しいほどより多くの API を利用することができます。一方で、古いバージョンでバグがあったり、別の手段が提供されたりしたために推奨されなくなった API も存在します。
アプリを開発する上では、OS のバージョンごとの API の差異を考慮し、互換性を保つことが重要になります。 利用できるAPI群はAPI Levelによって一意に識別することが可能です。
また、iOS と異なり、メーカ毎に様々なスペックを持つ機種が開発されているため、機種ごとの互換性も考慮する必要があります。
フレームワークとして、この互換性を保つための仕組みが用意されていますので、この仕組を用いてコードを記述するようにします。
バージョン番号 | API Level | コードネーム |
---|---|---|
1.5 | 3 | Cupcake |
1.6 | 4 | Donut |
2.0 | 5 | Eclair |
2.1 | 7 | Eclair MR1 |
2.2 | 8 | Froyo |
2.3 | 9 | Gingerbread |
3.0 | 11 | Honeycomb |
3.1 | 12 | Honeycomb MR1 |
3.2 | 13 | Honeycomb MR2 |
4.0 | 14 | Ice Cream Sandwich |
4.1 | 16 | Jelly Bean |
4.2 | 17 | Jelly Bean MR1 |
4.3 | 18 | Jelly Bean MR2 |
4.4 | 19 | Kitkat |
4.4W | 20 | Kitkat Watch(KitKat for Wearables Only) |
5.0 | 21 | Lollipop |
5.1 | 22 | Lollipop MR1 |
6.0 | 23 | Marshmallow |
7.0 | 24 | Nougat |
7.1 | 25 | Nougat MR1 |
8.0 | 26 | Oreo |
8.1 | 27 | Oreo MR1 |
(一部のマイナーバージョンの違いについては省略しています)
開発環境
現在、AndroidStudio が標準の IDE として開発・提供されています。この他、Eclipse や、IntelliJ IDEA など他のIDEでも開発することができます。
Eclipse で開発環境を準備する場合は、Android SDK と ADT Plugin が別途必要です。
Google が公式に配布している開発環境の ADT Bundle には、Android SDK と、ADT Plugin がインストール済みの Eclipse が入っています。
Android SDK は、最新の Android のもののみがセットアップされているため、この他の OS バージョンを扱う場合は、別途インストールが必要です。
これらの環境は、開発に使う PC の OS を問わず整えることができます。