タグ「Android入門」が付けられているもの

あらためて、Android アプリケーションの開発手順を振り返ってきているが、ちょっとややこしそうで敬遠していたユニットテストのやり方を把握しておこうと思う。

Activity のテスト

デベロッパーズガイドを確認すると、以下のテスト方法が説明されている。

http://developer.android.com/guide/topics/testing/index.html

まずは、Acitivity のテスト方法のアウトラインを理解したいと思う。

http://developer.android.com/guide/topics/testing/activity_testing.html

Android Instrumentation Framework 

Acitivity のテストは、コールバックに基づいた複雑なライフサイクルをもっていて、また、イベントをユーザーインターフェースへ送る必要もあるが、これらを可能にするのは、Android Instrumentation Framework  のようだ。InstrumentationTestCase を基底クラスとしたテストケースを作成することで、Acitivity を操作する方法が提供される。

InstrumentationTestCase の機能

以下のような機能が提供される

  • ライフサイクルの制御 : 開始、停止、破棄
  • 依存性の注入 : Context や Application、Intent のテスト用モック作成
  • ユーザーインターフェース機能 : キーストロークやタッチイベントエミュレート

テストクラスの概要

ActivityInstrumentationTestCase2 および、ActivityUnitTestCase の2つが主に利用するテストクラス

SingleLaunchActivityTestCase は Activity を通常でないモードで使用した場合

テストクラス 概要 モックContext
,Application
モック
Intent
ActivityInstrumentationTestCase2 通常のシステム環境 ×
ActivityUnitTestCase 隔離された環境 ×
※1
SingleLaunchActivityTestCase テスト中、環境が変化しない場合 × ×

※1 Activity.startActivity(Intent) 呼び出しは可

Eclipse から ADT を使ってユニットテストを行う

テスト用のプロジェクトの作成

  • テスト用に別プロジェクトを作成する必要がある
  • テスト用プロジェクトは、Android アプリケーションと同様のディレクトリ構造をもち、同様なファイル、マニフェストファイルなどを持つ
  • マニフェストファイルの <instrumentation> に従い、テスト対象のアプリケーションに接続する
  • Android プロジェクトの新規作成時だけではなく、いつでも作成できる

File - New - Other

Android Test Project を選択し、「New Android Test Project」ダイアログを開く(新規作成の場合、自動で表示される)

 android_test01

New Android Test Project

Test Project Name  に、名前を設定する。任意の名前がつけられるが、対象のプロジェクト + "Test" としておけばよい。

Test Target の「An existing Android project」 にチェックし、Browse で既存のプロジェクトを選択すると、その他の必要項目が自動でセットされる。

今回は、自作の手書きメモアプリを対象としてみた。

 android_test02

テストクラスの作成

作成された、テストパッケージ(今回の例では、info.typea.shujiroid.free.test) 配下にクラスを作成する。

パッケージを右クリックして、New - Class

名前は、テスト対象のクラス名 + "Test" としておけばよい。

基底クラスに、上記3クラスから、適切なクラスを選択する。とりあえず、ActivityInstrumentationTestCase2 としてみる。

 android_test03

テストクラスの実装

ここまでで、自動で生成されたテストクラスには何も実装されていないので、以下のような内容を実装する必要がある。

  • ジェネリック型に対象のActivityを指定する
  • コンストラクタ
  • setUp() メソッド、tearDown() メソッドを必要に応じて。setUp() では、ACTION_MAIN でインテントを呼び出したり、テスト用の環境を構築するのに利用する
package info.typea.shujiroid.free.test;

import info.typea.shujiroid.core.ShujiView;
import info.typea.shujiroid.free.R;
import info.typea.shujiroid.free.ShujiActivity;
import android.test.ActivityInstrumentationTestCase2;
import android.test.TouchUtils;
import android.view.Gravity;

public class ShujiroidTest extends 
              ActivityInstrumentationTestCase2 {
    private ShujiView shujiView;
    
    public ShujiroidTest() {
        super("info.typea.shujiroid.free", ShujiActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        shujiView = (ShujiView) getActivity().findViewById(R.id.shujiview);
    }
    
    public void testDraw() {
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                shujiView.requestFocus();
            }
        });
        TouchUtils.dragViewBy(this, shujiView, Gravity.CENTER, 500, 200);
    }
}

デバッグ対象のアプリケーションに参照設定されるので、Activity はじめ、各クラスが参照可能になっている。また、対象のリソース参照クラスも、そのまま、R から利用できる。

setUp() をオーバーライドし、デバッグ対象アプリケーションの View の参照を取得しておき、テストケース(testDraw) から、タッチイベントを発生させることを試みる。

アプリケーションのユーザーインターフェースオブジェクトにアクセスするにはUIスレッドからアクセスする必要があるため、Activity.runOnUiThread() から、フォーカスをビューに与える

その後、TouchUtils を利用して、画面に描画を行ってみる。

ちなみに、以下のようなユーティリティが存在する。

テストの実行

テストケースクラスのコンテキストメニューから、Run As - Android JUnit Test を選択

android_test04

実機をつないで、上記を実行したところ、以下のように画面中央から、ドラッグイベントが発生し、画面に奇跡が描画された。

 android_test05

結果は、JUnit ビューに表示される

android_test06

なんとかとっかかりがつかめたので、次からはテストファーストできそうだよー

Android の超簡単なアプリケーションを作成し、Android SDK のソースコードを入手して参照できる状態にしていく。

事前準備

  1. JDK、Eclipseのインストールと日本語化

  2. Android SDK のインストールとエミュレータの作成

  3. Git Eclipse プラグインのインストール

が行われていることを前提とした記述となってます。

Hello Android アプリケーションの作成

まずは、画面にボタンを一つ配置するだけのアプリケーションを作成。

プロジェクトの作成

ファイル - 新規 - Android プロジェクト を選択する。

android_project01

プロジェクト属性の設定

ダイアログに、以下のような内容を設定し、完了。

項目 設定値 備考
プロジェクト名 HelloAndroid Eclipse 上のプロジェクト名を指定する
ビルドターゲット Android 2.2 にチェック ビルドに利用するSDKを指定する。SDKのインストールについては、こちら
アプリケーション名 HelloAndroid アプリケーションの名称を指定する
パッケージ名 jp.example.android 等 Java 規約に従ってパッケージ名をつける。公開する場合、ドメインを取った方がいいかも。1,000円/年 程度で取得できるし。
※ '-' を含むドメインは、'_' に置き換える。
アクティビティの作成 チェックON チェックをONにしておくとActivity(Android でいう"画面"のようなもの) のサブクラスが自動で生成される。
最小SDKバージョン 8 動作する最小のSDKバージョンを指定する。通常は、ビルドターゲットのバージョンに一致させれば良いと思う。

 

android_project02

画面のデザイン

Android では、画面をプログラムで記述することもできるが、基本的にはXMLにて画面定義を行う。

Eclipse の ADT プラグインには、一応画面のデザイナがついている(かなり頼りないが)ので、画面定義ファイルHelloAndroid\res\layout\main.xml をダブルクリックすると、以下のようにデザイナが立ち上がるはず。デザイン画面の下部のタブ「Graphic Layout」 「main.xml」で、デザイン画面と、XMLの記述が切り替わる。

先ずは、デザイナの左側のツールボックスから、「Button」 を黒色の画面にドラッグ&ドロップする。

android_project03

ボタンのプロパティ設定

ボタンが張り付いたら、コンテキストメニューから、プロパティを表示

android_project04

プロパティビューが起動するので、Text プロパティに 「Hello Android!!」 とでも設定しておく。

基本的に文字列リソースもXMLファイルに保持するのが多国語対応のためにもよいと思うが、簡単のために、プロパティを直接編集する。

また、ID プロパティを「@+id/btnHello」 とでもしておく。「@+id/」 としておくことで、そのIDが自動的に整数値としてフレームワークで管理され、R.id.btnHello として識別できるようになる。

 android_project05

ボタンを押下したイベントの追加

HelloAndroid\src\{パッケージ名}.HelloAndroid\HelloAndroidActivity.java を開いて、以下のように編集する。

  • (1) View.OnclickListener を Activity に実装 : ボタンのイベントを処理できるようにするため
  • (2) ボタンのイベントハンドラと登録 : 先ほど定義したボタンのIDを利用して、フレームワークからボタンのインスタンスを取得(定型的な書き方 JavaScriptみたい) し、イベントリスナーに Activity 自身を登録
  • (3) クリックイベントのハンドリング : ボタンを押されたら、テキストを現在時刻に変更する
package info.typea.HelloAndroid;

import java.util.Date;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class HelloAndroidActivity extends Activity 
                                  implements View.OnClickListener { // (1)
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // (2)
        Button btnHello = (Button) findViewById(R.id.btnHello);
        btnHello.setOnClickListener(this);
    }

    // (3)
    @Override
    public void onClick(View v) {
        Button btn = (Button)v;
        String s = (new Date()).toString();
        btn.setText(s);
    }
}

上記(1)について、 Eclipse の自動補完を使って、implements OnClick ・・・ や、 View.OnClick・・・ としても自動補完されない。View.OnclickListener は、クラスの内側に宣言された、static なインターフェースというちょっと変わったかたちになっている(でも結構便利) ので Eclipse が探しきらないのだろう。最初とまどったが、implements に続かないところ、例えばメンバー変数を宣言する位置とかで、View.Oncli・・・ とかなら自動補完されるので、そこで補完しておいて、カット&ペーストでimplements の後ろへ持って行くと楽かも。

ブレークポイントの設定

ソースエディタの左側の部分をダブルクリックするとブレークポイントを設定できる。

上記で追加したコードの btn.setText(s); にブレークポイントを設定する。

android_project08

アプリケーションの起動

プロジェクトのコンテキストメニューから、デバッグ - Android アプリケーション を選択する。

android_project06

数分後、エミュレータが起動してくる。

めでたく作成した画面が表示されている。で、ボタンを押してみる。

android_project07

先ほど設定した、ブレークポイントで実行が停止する。

android_project08

実行 - ステップイン とするか、F5 キーを押下することで、呼び出すメソッドの中のステップをデバッグすることができる。

android_project09

・・・ はずだが、Button.setText() メソッドは、SDK のメソッドなので、このままでは、以下のように「ソースが見つかりませんでした」という表示がでるだけで、ソースコードを確認することはできない。

android_project10

 

Android SDK ソースコードのダウンロード

ここからは、SDKのソースコードを入手して、Eclipse から参照できるようにしてみる。

Git リポジトリビュー から、リポジトリの Clone アイコンをクリック

Eclipse Git プラグインの導入 」をしておく。

特にEclipse プラグインを利用する必要はないけど、導入したので使ってみる。

以下も参照。

android_sdk01

Git リポジトリの Clone 設定ダイアログ

上記アイコンのクリックにより、以下のダイアログが開く。URI に以下の値を貼り付けると、その他の項目には、自動で値が設定されるので、「次へ」 を押下。

git://android.git.kernel.org/platform/frameworks/base.git

android_sdk02

Clone するブランチを選択

とりあえず、Android2.2 なので、froyo-release を選択してみた。

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=summary

android_sdk03

ローカルでの置き場所を指定してCloneを実行

とりあえず、Android SDK のインストールディレクトリ配下に作成するように、%ANDROID_SDK_HOME%\base を ディレクトリーに指定する。

自分の環境だと、以下のパス。

例 : C:\Program Files\Android\android-sdk-windows\base

「完了」を押下し、しばらくまつ。

これが結構な時間がかかる。15分~20分程度。

android_sdk04

リポジトリーの Clone が 行われ、上記 base\.git にリポジトリが作成される。

また、自動的にソースが Checkout されるので、完了すると以下のようにソースコードを含むディレクトリ構造が作成される。

android_sdk05

ソースコードの位置を指定

プロジェクト\Android2.2\android.jar のプロパティから、Java ソースの添付を選択し、「外部フォルダー」ボタンで、上記 ソースコードが展開された、base フォルダを指定する。

 android_sdk06

Android SDK のソースが参照できるようになった

これで、自分が書いたアプリケーションのソース上から、Android フレームワークのメソッド呼び出し箇所を、Ctrl を押しながらマウスオーバーすると、リンクが表示されるので、クリックする。

android_sdk07

SDKのソースが画面表示された。 ちゃんと設定されているようだ。

android_sdk08

デバッグの実行

先ほどは、「ソースが見つかりませんでした」 となったが、同様にブレークポイントを設定して、デバッグ開始。停止したら、F5 でステップインしていくと、今回は前回と違い、SDK のソースコードをステップ実行することができるようになる。

android_sdk09

めでたしめでたし。

http://www.eclipse.org/egit/

Git を Eclipse から利用するために Egit プラグインを導入する。

EGit は、Java による Git の実装 JGit 上に実装されている Eclipse プラグイン。

以降のメモは、Eclipse 3.6 のインストールと Preiades による 日本語化を行っているのを前提としている。

また、Git 自体の使い方、使ってみた時のメモはこちら

インストール

ヘルプ - 新規ソフトウェアのインストール で、以下のダイアログが開くので、作業対象に、以下のURLを指定し、チェックし、「次へ」

http://download.eclipse.org/egit/updates

egit_inst01

使用条項に同意し、インストールを行い、再起動。以上でインストール完了。

設定

ウィンドウ - 設定 - チーム - Git - 構成 から、「新規エントリー」 を押下し、user.email および user.name エントリを作成する。この情報は、~/.gitconfig に保存され、誰がリポジトリに変更を加えたのかを特定するのに使用される。

egit_inst02

リポジトリの新規作成

ファイル -新規 - Java プロジェクト から、「HelloGit」 プロジェクトを作成

egit01

プロジェクトのコンテキストメニューから、チーム - プロジェクトの共用 から、

egit02

Git を選択して 「次へ」

egit03

プロジェクトを選択して、「リポジトリの作成」を押下。

これで、新規Git リポジトリがプロジェクトのために初期化される。

egit04

プロジェクト名の後ろに、[master] が付加されており、master ブランチとして、追跡されていることを表している。「?」は、バージョン管理に追加されていないことを表している。

egit05

変更の追跡

パッケージエクスプローラーのメニューバーから、ドロップダウンメニューを開き、フィルターを選択し、「.*リソース」 のチェックを外すと、「.classpath」や「.project」 等の管理ファイルが表示される。

egit08

「.gitignore」ファイルを追加し、内容を 「bin」とすることで、プロジェクトフォルダー配下、class ファイルを出力する、bin フォルダをバージョン管理対象外とする。

egit09  egit11

追加

コンテキストメニューから、チーム - 追加 を行う。

egit08 

アイコンが、「+」にかわり、バージョン管理に追加された。(「.gitignore」ファイルもバージョン管理対象とする必要あり)

egit09

コミット

プロジェクトのコンテキストメニューから、チーム - コミットを行う。

  • コミットする変更に対しての簡単な説明を最初の行に入力する。デフォルトの作成者とコミッタは、ホームディレクトリの「.gitconfig」ファイルに記述されている。
  • 「サインオフ」を追加をチェックしておくと、Signed-off-by: タグが追加される。
  • 「コミット」ボタンでコミットが行われる。

egit12

アイコンが、樽 に変わる。

egit13

履歴の表示

コンテキストメニュー の チーム - Show in Repository View を選択し、

egit14

プロジェクトのコンテキストメニューから、「ヒストリーに表示」

egit15

履歴が表示される。

egit16

HelloGit.java の内容を編集して、コミットを行う。

コミットログが表示された。

egit17

比較モードで表示

比較モード アイコンを トグルして、ソースをダブルクリックすると、比較ビューが表示される。

egit18

egit19 

まずは、以上

に続いて、Eclipse から実機デバッグを行う準備をステップ・バイ・ステップで。

Android 端末の設定

端末側で、以下の設定を行い、Windows PC に接続し、ドライバーをインストールする。

Android 端末は、X06HT Desire の例。

設定 - アプリケーション を選択

application

不明な提供元 のチェックを ON に

デバッグ用にアプリケーションをインストールする必要があるので、「不明な提供元」のチェックをONにし、「開発」をタップする。

dev

以下、必要なチェックをONに

  • USBデバッグ ・・・ ON にする。これにより、USBストレージとしてではなく、Android 端末としてPCに認識される。
  • スリープを無効にする ・・・ USB接続している間(要するにデバッグ中)は、スリープしないように設定
  • 疑似ロケーションを許可 ・・・ デバッグ用の位置情報を設定可能にする・・・のだろうなぁ(未調査)

settings

Windows XP にて、ドライバーのインストール

http://developer.android.com/sdk/win-usb.html

Android 端末を上記設定にして、接続すると、ハードウェアの追加ウィザードが立ち上がる。

立ち上がらない場合は、コントロールパネルから「ハードウェアの追加」を選択すればよい。

「いいえ、今回は接続しません」 を選択し、次へ

android_inst50 

「一覧または特定の場所からインストールする」を選択し、次へ

android_inst51

「リムーバブルメディア を検索」チェックを外し、「次の場所を含める」にチェック、Android 開発環境構築 ステップ・バイ・ステップ (2) ~ Android SDKのインストールと エミュレータの作成 で、Android SDK をインストールしたパス配下の、google-usb_driver を選択し、次へ

※ Android SDK のインストール時に、適切にGoogle が提供するツールキットをインストールしておく必要がある。

C:\Program Files\Android\android-sdk-windows\google-usb_driver

android_inst52

ADBドライバをインストールできない場合の対処(X06HT)

X06HT だと、「このハードウェアをインストールできません」となってしまう。

Android (X06HT Desire) Windows XP にてADBドライバを認識しない(実機デバッグできない)場合の対応

android_inst53 

C:\Program Files\Android\android-sdk-windows\google-usb_driver\android_winusb.inf ファイルをテキストエディタで開き、CPUのタイプに合わせて、[Google.NTx86] x86 プロセッサまたは、[Google.NTamd64] amd64プロセッサセクション等の下に下記を追記し、再度インストールを行う。

ダイアログを閉じてしまったりしたら、コントロールパネル - ハードウェアの追加 から、ウィザードに従って進めるとまた出てくる。

android_inst54

;
; HTC Desire
%SingleAdbInterface%        = USB_Install, USB\VID_0BB4&PID_0C87
%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C87&MI_01 

インストール完了

android_inst55

ADBドライバをインストールできない場合の対処法の想像(X06HT以外)

ちなみに、X06HT Desire についての解決法は、「HTC desire 実機デバッグ」を参考にさせていただいたが、上記android_winusb.inf に追記した内容は、見る限り、USBデバイスの

VID_ベンダID&PID_プロダクトID

のようだ。今回、VirtualBox を使って、USB設定のフィルタ編集にて内容を確認した。

android_inst56

この情報を得ることができれば(VirtualBoxをいちいち使わなくても良い方法もあるだろう)、インストールファイルに情報が記述されていない端末でも、上記X06HT のように、エントリーを作成し、インストールすることができそうな感じ(試しようがないので、想像)

ちなみに、Windows 7 へのインストール は、Android 実機(X06HT Desire)やっと入手!実機デバッグを試す を参照

Eclipse から 実機を参照する

Eclipse を立ち上げて、メニュー - ウィンドウ - ビューの表示 - その他 から、「Devices」 を選択して、OK とする。

android_inst57

端末が認識されている。

android_inst58

ちなみに、右上のアイコンを押すと、端末のスクリーンショットがとれる

android_inst59

android_inst60

これで、実機デバッグするための準備が整った。

JDK のインストール、Eclipse のインストールと日本語化 に続いて、Android SDK をインストールし、エミュレータ起動確認までして、開発準備が整うところまで行う。

Android SDK のインストール

Windows 用のインストーラー(exe) をダウンロード

http://developer.android.com/sdk/index.html

android_inst38 

インストール

ダウンロードした、インストーラを起動し、ウィザードに従う。

後で必要になるので、インストール先を覚えておく

C:\Program Files\Android\android-sdk-windows

android_inst39

インストールが完了し、「起動する」にチェックを入れOKとすると、以下のように「Android SDK and AVD Manager」 が立ち上がるが、後ほど、Eclipse 経由で実行するので、ここでは起動しなくて良い。

android_inst40

SDK のインストールといいつつ、これは、スターターパッケージで、実際のSDK は、開発対象となるSDKのバージョンなどを指定して、個別にインストールすることになる。

ADT Eclipse プラグインのインストール

http://developer.android.com/sdk/eclipse-adt.html#installing

ADT (Android Development Tools) という、Android アプリケーションを構築するための統合された環境のEclipse 用プラグインをインストールする。推奨の方法で、ほとんどのことがEclipse からできる用になる。

インストール

Eclipse を起動し、メニュー - ヘルプ - 新規ソフトウェアのインストール を選択。

右上の 「追加」ボタンを押下して開いたダイアログに以下の値を設定する。

名前 : ADT Plugin

ロケーション : https://dl-ssl.google.com/android/eclipse/

android_inst42

開発ツールのチェックを選択して、「次へ」

android_inst43

次画面では、インストール項目の確認が行われるので、ここも「次へ」

次画面で、ライセンス条項に同意して、「完了」

インストールが完了すると、再起動を促されるので従う。

ADT プラグインの設定

Eclipse が再起動したら、メニュー - ヘルプ - 設定 から設定画面を起動。

左ペインにて、Android を選択し、右側の「SDKロケーション」に先ほど控えたSDKのインストール先を選択し、OK

android_inst44

Android SDK および AVD マネージャの起動

メニュー - ウィンドウ から、Android SDK および AVD マネージャー を選択する

android_inst45

左側で、Available package を選択すると、現在インストール可能なパッケージを選択できるようになる。

後から必要に応じて再度インストールできるので、とりあえず以下をチェックしてインストールする。

  • Android SDK Platform-tools : 必須
  • SDK Platform Android 2.2 API 8 revision 2 : いずれかのバージョンは必須
  • Documentation : ドキュメントをオフラインで参照。Eclipseから利用もできる
  • Samples : サンプルプロジェクトを実行でき、コードを参考にできる。非常に有用。
  • Google APIs : Google Map 等、Android SDK に含まれず、Google が提供しているライブラリを使う場合に必要
  • Google USB Driver package : Windows で実機をUSB接続して使う場合に必要なドライバ

android_inst46

※ コード補完でEclipse が固まってしまう件の対処

Android 関係のコード補完、例えばActivity の派生クラスなどを行うと、確実にEclipse がフリーズする事象がが発生。1分程度待てば回復するのだがかなりいらつく。

こちら にて対処法が紹介されている。Eclipse3.6.1 + ADT にて発生するようだ。org.eclipse.jdt.core_3.6.1.v_A68_R36x.zip をダウンロード、解凍し、Plugins フォルダを、Eclipse のディレクトリに上書きすることで解消。

エミュレーターの作成

インストールが完了したら、そのまま、Android SDK および AVD マネージャー 画面の左側の、Virtual devices を選択し、「新規」ボタンを押下する。

起動したダイアログに、対象となる実機を想定した値を設定し、「CreateAVD」ボタンを押下。

android_inst47

作成できたら、エミュレータを、開始してみる。

android_inst48

しばらくかかる・・・

android_inst49

起動した。

これでとりあえず、開発するための環境は整った。

Android 入門本の私的レビュー

以下に、Android Developers 公式サイトを参照しながら、環境を限定することで、なるべくステップ・バイ・ステップでAndroid 開発環境の構築を説明しようと思う。

 

Android SDK インストールについてのページ http://developer.android.com/sdk/installing.html

android_inst01

JDK のインストール

まず、PCにJDKをインストールする。JDK とは、Java Software Development Kit の略で、Java を使った開発を行うのに必要なライブラリ群。

JDK5 もしくは JDK6 が要件になっている。最新のものを以下からダウンロード。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java Platform (JDK) のダウンロードを選択。

ページを見ると、いろいろ選択肢があり、混乱するが、以下のアイコンをクリックし、Java Platform(JDK) をダウンロードする。

android_inst02

ちなみに、JRE というのは、Java Runtime Environment の略で、実行環境のみで、開発環境は入っていない。JDK は実行環境 + 開発環境。

また、Java SE は Standard Edition のことで、基本的なライブラリ。他にも EE (Enterprise Edition) など、拡張機能などもあるが、Android 開発には不要。

Platform に Windows を選択、I agree のチェックを ON にして、Continue

android_inst03

jdk-6u23-windows-i586.exe をダウンロード

※ 6u23 の部分はバージョンなので異なる可能性あり

 android_inst04

ダウンロードしたファイルの実行

起動したら、ウィザードに従い、「次へ」を選択していけばよい。

android_inst05

環境変数の設定

Eclipse を使う上では、必須ではないかもしれないが、コマンドラインからJavaのコマンドを使うなどの場合、OSにコマンドの場所を認識させる必要があるので、環境変数を設定しておくとよい。

インストールが完了すると、おそらく、Program Files 以下に Java フォルダが作成され、その配下に、JDKのディレクトリが作成されるはず。

android_inst06

マイコンピュータ を 右クリックしてプロパティを開き、「詳細設定」タブ から、「環境変数」ボタンをクリックすると、環境変数ダイアログが開く。

android_inst07

システム環境変数から、「新規」をクリックし、開いたダイアログの「変数名」に 「JAVA_HOME」 を、変数値に、今回の例では、「C:\Program Files\Java\jdk1.6.0_23」 を、入力し、OK

android_inst08

次に、システム環境変数の一覧から、「Path」を選択し、「編集」ボタンをクリックし、末尾に「;%JAVA_HOME%\bin」を追記し、OK とする。

確認

正しくインストールと設定ができたかを、コマンドプロンプトを立ち上げ、「javac -version」コマンドを打ち込むことで確認する。

android_inst11

Eclipse のインストール

ダウンロード ~ インストール

以下から、Eclipse をダウンロードする。

ダウンロードページ http://www.eclipse.org/downloads/

Eclipse 自体は、様々な言語向けの統合開発環境(IDE)。

上記ダウンロードページを開くと、こちらもいろいろあって何をダウンロードしてよいか混乱するかもしれない。以前は、このダウンロードページでいう、「Classic」一つのみが提供されていて、それをインストールした後、プラグインで機能拡張する方式だった。しかしながら、当時のEclipseは、プラグインによって機能拡張が柔軟な反面、プラグイン自体どこから入手したらよいやら、同じような機能で複数のプラグインが存在して何を選んでよいやら、プラグイン間の相性が悪くて使いものにならないやら、Eclipseのバージョンを上げたら使えないやらで結構、いやかなり面倒くさかった。いつからか、現在のように、開発対象(例えば、JavaEE、C/C++、PHP等)によって、よく使うプラグインとセットにして動作確認したものを提供してくれるようになった。なので、一見いろいろあってよくわからないように見えるが、実は非常に楽になった結果なのです。

で、推奨の「Eclipse Classic」をダウンロードする。個人的には、Java EE 版に Android SDK を組み込んでいるが、別段問題はないと思う。

android_inst12

ダウンロードしたファイルは、zip 圧縮されているので、適当なフォルダに解凍。

解凍してできたフォルダの中の、「eclipse」フォルダを、任意のフォルダに移動で、インストール完了。

自分は、「eclipse」フォルダを「eclipse3.6.1」などバージョンを付加して、「C:\Program Files」以下に置くことが多い。バージョンを付加するのは、eclipse の複数のバージョンを同時にインストールすることが多いため。eclipse 自体は、レジストリを使ったりしないため、複数バージョンを共存することが可能。

android_inst13

日本語化

Eclipse はこのままだと、メニューやらすべて英語。自分も昔はランゲージパックとか当てていたが、今は、おそらく、プレアデスっていう動的に日本語化するプラグインを組み込んだオールインワンパッケージを利用するのが主流と思われる(ちがう?)ので、そちらを試す。

そもそも、上記手順にて、Eclipse をダウンロードせずに、JDK インストール後、Java の Standard All in One (JREなし) をダウンロード、解凍すればそれでよさそうではある。

以下の手順がわりと面倒くさいので、それで良いかも。

Pleiades http://mergedoc.sourceforge.jp/#pleiades.html

android_inst14

個人的には、Eclipse を使っているうちに慣れてきて、別に英語メニューのままで不自由は感じなくなったので、日本語化せずにそのまま使っている。

プレアデスを一度試してみたことがあるが、ただでさえ軽くはないEclipse がいっそうもっさりしてしまって、それ以来使っていない。そのあたりは、きっとだいぶ解消されていることだろうので、今回試してみよう。

上記オールインワンパッケージを利用せずに、インストール済みのEclipse にプレアデスを適用する方法が、以下にあるので、そちらを試す。

http://mergedoc.sourceforge.jp/#pleiades.html

android_inst15

Eclipse を起動

eclipse.exe を起動すると、作成したプロジェクトを格納する位置を指定するダイアログが表示されるので,適宜変更して(基本、そのままでよい)、OK

android_inst16

ワークベンチを表示

画面右上のワークベンチを選択

android_inst17

subversive プラグインのインストール

Pleiades が、Subversion の公開リポジトリにあるので、そのプロジェクトを取得するために、Subversion プラグイン である、Subversive プラグインをインストールする。

Help - Install New Software を選択

android_inst18

Install 画面の、プルダウンから、Helios - http://download.eclipse.org/releases/helios を選択

※以降のコネクターのインストールで、次のようなエラーが出た場合、http://download.eclipse.org/technology/subversive/0.7/update-site/ を選択して、以下、同様の処理を行ってみる。

subversice_err 

 

android_inst19

Collaboration グループの下の、Subversive SVN Team Provider をチェックして、インストールを行う。

http://www.eclipse.org/subversive/documentation/gettingStarted/aboutSubversive/install.php

android_inst20

SVN コネクターのインストール

上記だけでは使えないので、コネクターのインストールを行う。

Help - Install New Software を選択し、Install 画面で、Available Software Site のリンクを選択

android_inst26

起動した画面から「Add」ボタンをクリックし、ダイアログに以下の値を入力しOK、元の画面も閉じる

Name:Polarion Software

Location : http://community.polarion.com/projects/subversive/download/eclipse/2.0/helios-site/

android_inst27

すると、Install 画面のプルダウンに追加したURLが出てくるので、選択。すると、リストにSVN コネクションに関するアイテムが表示される。

android_inst28

その中から、Subversion SVN Connectors および、SVNKit 1.3.1 IMplementation を選択してインストールを続行。

android_inst29

Subversive リポジトリビューア を開く

Window - Show View - Other を選択

android_inst22

SVN から SVN Repositories を選択

android_inst30

SVN Repositories ビューが表示されるので、右クリックし、Repository Location を選択

android_inst31

URL に、http://svn.sourceforge.jp/svnroot/mergedoc を設定し「Finish」をクリックすることで、Pleiades プロジェクトを参照可能になる。

android_inst32

trunk を右クリックし、「Check Out」をクリックし、プロジェクトを取り込む。

android_inst33

build.xml を選択して、右クリックから Run As - Ant Build を行う

android_inst34

build の下に、pleiades.zip が生成されるので、これを解凍する。生成される場所は、build のプロパティを参照すると、パスが表示されている。

android_inst35

一旦、Eclipseを終了し、解凍したフォルダから、features と plugins フォルダを、Eclipse をインストールしたフォルダ直下にコピー。

eclipse.ini をテキストエディタで開き、最終行に

-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追記し、再度起動する。

android_inst36

日本語化終了

android_inst37

とりあえず、以上。

手順をある程度詳細に書くと結構な分量になるなぁ。

(2) へ

Java の入門書としては、当時、以下のJavaではじめるプログラミング (プログラミング学習シリーズ) が非常にわかりやすくて良かったのだけど、中古品しか出てないってことは、あまり人気がなかったのかしら?Java5 以降に対応したものもでるといいのに残念。


Android 入門本 の 私的レビュー

すこし事情があって、自分が購入し、参考にしている Android 関連書籍についてレビューを書こうと思います。

まず、前提としてどのような視点から見ているのかを明確にするために、自分自身のJavaのスキルと経験をカミングアウトしておきます。

Java 関連 保有資格(今は、OCJ-P なんですね。当たり前ですが)

  • SJC-P 1.4 (Sun Certified Programmer For The Java 2 Platform 1.4)
  • SJC-P 5.0 (Sun Certified Programmer For The Java 2 Platform 5.0)
  • SCWCD 1.4 (Sun Certified Web Component Developer For The Java 2 Enterprise Edition 1.4)

Java 関連 業務経験(10年程度)

10年ほど前に、よくわからずにEJBを使ったシステムに携わったのち、Swingを利用したC/Sシステムに少々絡んで、Strutsを使ったシステム、Java のバッチ、J2EE のシステム、と基本的には枯れたServer 側での仕事をしています(ました)。

ということで、Java に関して、まぁ教科書レベルの一通りの知識はあるが、クライアントJava プログラミング(Swing とか、並行性とか) はよくわからなくて、J2EE の Servlet、JSP の基本的知識と、古い フレームワークの経験がある程度の知識の人間が、Android に興味をもって勉強を始めようという立ち位置からのレビューです。

※★印は、Android 入門書籍として、自分に役に立った度です。

Google Androidアプリケーション開発入門 画面作成からデバイス制御まで――基本機能の全容

★★★★★

最初に購入した本

最初の20ページ程を使って、Android の概要、開発機と実行機が異なるクロス開発とはどういうものか、JDK、Eclipseの導入、Android SDKのインストール方法、エミュレーターの使用方法などが端的に説明されています。

それぞれ、詳細な手順が記されているわけではないです。しかし、書籍は Webと違って紙数が限られているので、まず、「概念」の理解に重点を置き、実際の手順は Web を参照すべし、という本書の方式は自分には合います。

開発についての章にも、その思想は現れています。

アクティビティ、インテント、リソース、ビュー、レイアウト、サービス、ノーティフィケーション、コンテンツブロバイダ・・・ と、Android 開発に登場する「概念」がわかりやすく説明されているため、全体像や、構成する要素を概観するには良いテキストだと思います。

詳細はリファレンスなりを参照すればいいわけですから、入門書に求められるのは、まさに新しい「概念」をわかりやすく説明することにあると考えると、その責は果たしています。

また、付随するサンプルソースも、基本的に動くサンプルソースなのですが、本質的ではない部分は簡潔に記述されおり、なるべく本質がわかりやすくなるように考えられていると思います。

サンプルは、センサーの取り扱いや、Google Maps の利用、位置情報、バーコードリーダー、カメラなど、携帯端末ならではのトピックも充実しています。

まぁ、上記で述べた本書の良い点は、逆に言うと、Java も Android も初めてのような初心者のためには説明が足りなくよくわからないし、具体的な実装方法のTipsや、そのまま動く教材のようなサンプルが欲しいような人には物足りない、といったことになるかもしれませんが、それは致し方ないでしょう。逆に自分はそこまで手取足取りではない方がうれしい。

 

全体として、Anroid 開発の始め方から、アプリケーションの公開まで、また、センサーやGoogle Maps、バーコードリーダーなどのキャッチーなサンプルコードを含みつつ、Android 特有の「概念」をわかりやすく網羅的に説明した良書 だと思います。

 

Android2.1プログラミングバイブル

 

★★★★☆

上記、Google Androidアプリケーション開発入門 の次に購入しました。なので、Anroid 開発の概要については、ある程度理解した上で読んでいます。

プログラミングバイブルと銘打つだけあって、かなりプログラミングにフォーカスした内容になっています。

Android の ユーザーインターフェースは、XML にて定義することができ、非常に便利なのですが、もちろん、Swing や AWT のように、Java のソースコードで構築することもできます。

で、本書は基本的にプログラミングにフォーカスしているからか、XMLによるレイアウト設定は使わずに、プログラミングによりユーザーインターフェースを構築するスタイルをとっています。

これは、これで、プログラムがどう動くのかを理解するには非常に良いのでしょうが、サンプルコードがすこし「うるさく」なる気もしないではないです。

要するに、自分は、欲しい部分のサンプルコードに対して、GUI の構築部分のソースコードなどは雑音に感じてしまう。

ただ、本書のサンプルアプリケーションを「そのまま」実装して教材として試してみたい場合、には必要なコードだと思います。そういう意味では、親切な設計になっています。

一応XMLレイアウトについても、数ページ触れられてはいますが、

「本書のサンプルプログラムでは、ユーザーインターフェースのレイアウトをJava言語で作成していますが、レイアウト情報をXMLで記述した『レイアウトファイル』をリソースとして利用することもできます。

とのことなので、著者は、基本的にGUIをプログラミングするスタイルなのでしょう。

自分としては、XMLでレイアウトできるところはXMLを利用したいですが、コードでの書き方も知っておくべきではあると思うので、そういう意味では良いと思います。ただ、この本のみを参照し、GUIの構築はこういうスタイルでやるべきだという先入観を持ってしまうのはどうかなと思うのは気にしすぎでしょうか。

内容は濃いと思います。また、API のリファレンスの抜粋が記載されているので、基本的な利用法であれば、いちいち、オンラインのリファレンスを参照する必要がない作りになっています。

あと、ところどころに、Java の文法のコラムがあるのですが、

「drawText() メソッドに渡している『"Hello World!"』は文字列です。Java 言語では『"』で囲んだ文字列がString型の文字列オブジェクトとなります。」

・・・ うーん。どのレベルの読者を想定しているのか微妙です。

 

全体として、端末の紹介から、SDKのAPIリファレンス、Java の文法コラムまで 総花的な内容をねらいつつも、親切な記述にはなっています。

サンプルコードのスタイル等に、著者の趣味が色濃くでている気がするのですが、これは好き嫌いですかね。

内容は豊富ですし、説明も丁寧なので、役に立つおもしろい本だと思います。

 

Android Hacks ―プロが教えるテクニック & ツール

★★★☆☆

この本は、確かに、テクニック & ツール ですね。

ただし、それぞれの テクニック について、懇切丁寧に説明したり、実際に動くサンプルコードが提供されることはありません。基本、それぞれについて、数ページを割いて、基本的な概念説明、基本的なコード、一歩進んだHACKの仕方という構成となっています。

紙数の都合もあるでしょうが、あえてすべてを提示しないことで、足りない部分を埋めるエクササイズを読者に強いているのではないかと思える節もあります

手取足取りの記述を好む方は、いらだつかもしれませんが、個人的には好感が持てるスタイルです。

どれも、読み物として(?)おもしろく読めますし、実際に何か機能を実現使用としたときに、どうしていいかのとっかかりを調べるのには良いと思います。

また、実機デバッグの仕方や、ADB や TraceView の利用法など、デバッグ手法についての記述があるのは、実際に開発を行う上で非常に役立つかと思います。

NDK(ネイティブコード環境)の記述、JNIの使い方、Android のソースコードをコンパイルして実機に焼く、など Hacks の面目躍如てきな項目もあるのですが、自分自身そこまで行けてないので、読み物として読むにとどまっています。

 

マニアックなおもしろい本だと思います。が、なぜか、全体を通して焦点が定まらない印象を受けました。テクニック & ツール ですし、一章が独立完結していて、どこからでも読める形式になっているので、それは、当然なのですけれど、他のO'Reilly 本にある、凝縮感が少し足りないというか・・・ まぁ贅沢な希望です。

 

Android Application Development

android market

★★★★☆

最後に、今、Android Market を確認したら、なくなってしまって(?)いましたが、Android Market にて、O'Reilly の本アプリが、あったので購入しました。

英語の本ですし、まだ読了していませんが、サンプルコードも充実しており、役に立ちます。

何よりすばらしいのは、価格が破格の安さです。500円程度。

ブックマークをつけることができたり、目次から各章へジャンプできたりと、情報を探すための機能も充実しています。

どうせ、込み入った情報を得ようとすると、英語のサイトにたどりつかざるを得ないので原書であることは英語の勉強と割り切るとして、価格を考えれば非常にお買い得だと思います。