Locked History Actions

Diff for "Android/Development"

Differences between revisions 3 and 4
Deletions are marked like this. Additions are marked like this.
Line 61: Line 61:
このパースペクティブはソースコードとして基本的にはJava、XMLその他画像ファイルなどのリソースを使うものであるので、基本的にはJavaパースペクティブと大差は無いのだが、最大の違いは、リソースを編集すると同時にR.javaファイルを自動的に生成することにあると思われる。

Androidでは、表示を国際化するために文字列をリソースとして管理することはもちろんだが、様々なandroidデバイスに対応できるように、デバイスの細かな違いによって異なるリソースを作成しておき、それが実行時に自動的に選択される。

例えば、iPadのアプリによくあるように、縦向きと横向きとで異なる画面レイアウトにすることももちろんandroidでは可能であるが、それもXMLリソースとして静的に定義しておけるようだ。

そして、これらのリソース(XMLファイルや画像ファイル、その他)をJavaプログラム側から参照できる必要があるが、それを簡単にするためにリソースのID情報を持ったR.javaというJavaソースファイルが自動的に作成され、プログラム側ではそれを参照すればよいようになっている。

Android開発環境ひとめぐり

Androidアプリケーション開発上の細かい部分については、ウェブ上にも非常に多くの資料があるが、 開発環境全般についておおまかに把握できるような文書は以外に少ない。 ここでは、Eclipseを使用して日常的にJavaアプリの開発を行っている者向けとして、大雑把にAndroidの開発環境を把握させる目的で記述す る。

Android SDK

開発環境としては、基本的にJava環境とAndoid SDKがあればよい。もちろん、Eclipseを使用しないで開発を行うのは困難が伴なうと思われるが、Androidアプリの作成には必ずしも必要では ない。

また、Javaは「コンパイラ」のみが必要と思われる。なぜなら、Androidアプリの実行は(実機であってもエミュレータであって も)DalvikVMという独自のVM上で行われるので、JavaのVMは必要ないからである。実行形式もJava本来のjarファイルではなく、apk という拡張子のファイルになる。apkはjar同様に中身はzipファイルではあるが、jarの中身とは全く異なる。

Android SDKにはエミュレータが含まれており、実機がなくとも作成されたapkをこの中で実行してみることができる。このエミュレータはCPUレベルのエミュ レーションを行っており、これはARMプロセッサのようである。つまり、このエミュレータの上に、ARMプロセッサとその上で走行するLinux、さらに その上のDalvikVMが載っているので、非常に動作が遅いが、ほぼ完全に実機と同じ環境を作成できるようである。

APIレベル

androidにはAPIレベルというものがある。これはAPIのバージョンとも言うべきものであるが、当然のことながら時間が経過するにしたがって上 がってくる。この一方で、実機の方は簡単には上がらないため、開発環境ではどのAPIレベルをターゲットとするかを指定できるようになっている。

もちろん、古いバージョンをターゲットとすれば、多くの実機で動作するだろうが、これも当然ながら新しい機能を使用することはできない。

AVD

AVDというのは、要するにエミュレータ上で動作する実機のイメージである。androidの実機としては、様々なAPIレベルのほか、様々なデバイス (SDカードメモリを持つか、画面の解像度はいくらかなど)の違いがあるため、これらを定義した実機のイメージを作成しなければならない。

これを先のエミュレータ上で動作させ、その上に開発済みアプリを走行させるということになる。ただし、ほとんど「実機と同じようなイメージ」ではあろうけ れども、エミュレータによってその状態を変更できるようなものであるらしい。例えば、エミュレータに対して、ACアダプタが接続状態であるか、あるいは電 池での駆動であるか、電池なら残りの容量は何%であるかなどを指定できるようになっており、エミュレータはその状態を作りだしてアプリ側に通知することが できる。

ツール

Android SDKには、これだけでAndroidアプリケーションが作成できるだけのツールが付属している。 これは、SDKインストールディレクトリの下のtoolsディレクトリと、platforms\android-?\toolsの下にある。

android-?の?にはAPIレベル番号が入るが、つまりAPIレベルによって使用可能なツールが異なるということらしい。

Eclipse

上述のようにEclipse無しであっても、SDKがあればAndroidアプリの作成は可能らしいが、Eclipseと(Eclipse用の)ADTプラグインがあれば開発は楽になる。

このADTプラグインには大雑把に二つの役割があると思われる。

  • EclipseをAndroid専用のIDEにする。
  • Android SDKとの橋渡しを行う。

Androidパースペクティブ

通常、Eclipse上でJavaプログラムの開発を行うには、JavaパースペクティブやJava EEパースペクティブを使うものだが、Androidの開発では、全面的にJavayとXMLを使うにもかかわらず、Androidパースペクティブを使用する。このパースペクティブによって、EclipseはAndroid開発専用のIDEとなる。

このパースペクティブはソースコードとして基本的にはJava、XMLその他画像ファイルなどのリソースを使うものであるので、基本的にはJavaパースペクティブと大差は無いのだが、最大の違いは、リソースを編集すると同時にR.javaファイルを自動的に生成することにあると思われる。

Androidでは、表示を国際化するために文字列をリソースとして管理することはもちろんだが、様々なandroidデバイスに対応できるように、デバイスの細かな違いによって異なるリソースを作成しておき、それが実行時に自動的に選択される。

例えば、iPadのアプリによくあるように、縦向きと横向きとで異なる画面レイアウトにすることももちろんandroidでは可能であるが、それもXMLリソースとして静的に定義しておけるようだ。

そして、これらのリソース(XMLファイルや画像ファイル、その他)をJavaプログラム側から参照できる必要があるが、それを簡単にするためにリソースのID情報を持ったR.javaというJavaソースファイルが自動的に作成され、プログラム側ではそれを参照すればよいようになっている。