Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

1.01. Android OSについて

hidey edited this page Dec 23, 2014 · 16 revisions

GitHub Pagesへ移行しましたmixi-inc.github.ioへお願いします。

wikiの方はしばらくしたら消していきます

この章では、Android OSへの理解を深めます。

目次

Android OSとは

Google が開発している、携帯情報端末向けのプラットフォームです。
オープンソースで開発されており、GitHub:android にプロジェクトが公開されています。

アーキテクチャ

Android プラットフォームのアーキテクチャは下記のようになっています。

Android Architecture

Linux をベースとした OS(Kernel) の上に、標準ライブラリや Android ランタイムなどのミドルウェアが乗っています。
さらに、ミドルウェアを抽象化したレイヤとして、アプリケーションフレームワーク( Android Framework )のレイヤが提供されています。
私達が普段開発するアプリケーションは、この図の最上位のレイヤに位置づけられ、アプリケーションフレームワークを使いながらアプリケーションを開発していくことになります。

DalvikVM

Android アプリは、Android ランタイムの DalvikVM の上で動作するようになっています。
開発に使用する言語は Java が公式にサポートされています。この他、Scala などの Java プラットフォーム上で動作する言語も使用出来ます。

DalvikVM は、メモリ搭載量の少ない携帯端末向けに最適化された(主にメモリ使用量を減らした) JavaVM と云われることもありますが、 公式の JavaVM(SunVM)と互換性がないものが含まれていたり、DalvikVMの実行するバイトコードが JavaVM のそれと異なるものになっていたりします。

レジスタベース

SunVM はスタックマシンであるのに対し、DalvikVM はレジスタマシンです。

dex

通常の Java では、javacコマンドでソースコードをコンパイルすると、クラスファイルが生成されます。
このクラスファイルを、SunVM が解釈することでプログラムを実行しています。

Android では、VM の特性が異なるため、もう一段階処理を施し、クラスファイルを DalvikVM で動作可能なようにします。
この結果生成されるファイルが、dex ファイルです。

通常、これらの差異をプログラマが意識することはありませんが、一部 Java で一般的なイディオムと異なるものが存在します。

バージョン

現在、最新バージョンは Android 4.3 です。

バージョン毎、提供される 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
2.2 8 Froyo
2.3 9 Gingerbread
3.0 11 Honeycomb
3.1 12 Honeycomb
3.2 13 Honeycomb
4.0 14 Ice Cream Sandwich
4.1 16 Jelly Bean
4.2 17 Jelly Bean
4.3 18 Jelly Bean
4.4 19 Kitkat
L 20 L
(一部のマイナーバージョンの違いについては省略しています)

開発環境

Eclipse の利用が推奨されていますが、IntelliJ IDEA など他のIDEでも開発することができます。
Eclipse で開発環境を準備する場合は、Android SDK と ADT Plugin が別途必要です。

現在、Google が公式に配布している開発環境の ADT Bundle には、Android SDK と、ADT Plugin がインストール済みの Eclipse が入っています。
また、Android Studio という、IntelliJ ベースの Android 開発用 IDE も提供されています。
こちらは現在ベータ版の位置づけとなっています。

Android SDK は、Android 4.2 のもののみがセットアップされているため、この他の OS バージョンを扱う場合は、別途インストールが必要です。

これらの環境は、開発に使う PC の OS を問わず整えることができます。

GitHub Pagesへ移行しましたmixi-inc.github.ioへお願いします。

Clone this wiki locally