Android プロジェクトの作成から、EclipseによるSDKソースコードをステップ実行するまでの手順

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

めでたしめでたし。

Follow me!

Android プロジェクトの作成から、EclipseによるSDKソースコードをステップ実行するまでの手順” に対して1件のコメントがあります。

  1. れお より:

    こんにちわ。
    突然のメールすいません。
    いつも、やぎさんのブログを参考にAndroid開発をしております、れおと申します。
    現在、「Android プロジェクトの作成から、EclipseによるSDKソースコードをステップ実行するまでの手順」を参考にしているのですが、つまづいていてメールしました。
    「Git リポジトリの Clone 設定ダイアログ上記アイコンのクリックにより、以下のダイアログが開く。URI に以下の値を貼り付けると、その他の項目には、自動で値が設定されるので、「次へ」 を押下。」のところで「次へ(N)」を押すと次のダイアログで「Exception caught during execution of ls-remote command」というエラーで次に進むことが出来ませんでした。
    また、プロトコルを「http」にすると「ローカルでの置き場所を指定してCloneを実行」で「完了」ボタンを押すと、「Exception caught during execution of fetch command」というエラーでダメでした。
    エラーログで色々調べたのですが解決できずメールした次第です。
    お時間がある場合で結構なのでご教授していただければ幸いです。

  2. れおさん
    矢木です。よろしくお願いします。
    「Exception caught during execution of ls-remote command」 で検索したところ EGitのバグみたいですが・・・
    https://bugs.eclipse.org/bugs/show_bug.cgi?id=357781
    修正済みのようなので、EGitを最新版に更新したら、解決しないでしょうか?
    今後もよろしくお願いいたします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です