Hatena::Groupandroid

lnzntの Android 日記 このページをアンテナに追加 RSSフィード

2012年04月06日(金)

「Hello,World」アプリを作る

22:55 | 「Hello,World」アプリを作る - lnzntの Android 日記 を含むブックマーク はてなブックマーク - 「Hello,World」アプリを作る - lnzntの Android 日記 「Hello,World」アプリを作る - lnzntの Android 日記 のブックマークコメント

AVD も作ったので、今度は「Hello,World」(的な)アプリを作ります。

プロジェクトを作成

eclipse を起動して、以下を行います。

  1. 「ファイル」->「新規」->「プロジェクト」で新規プロジェクトダイアログを開く
  2. [Android]-[Android プロジェクト]を選択して「次へ」をクリック
  3. Project Name を入力(任意。ここでは 「Hello」)して「次へ」をクリック
  4. (ターゲットの選択だが一択なのでそのまま)「次へ」をクリック
  5. Package Name を入力(任意。ここでは「com.example」)して「完了」をクリック

これで、Hello プロジェクトが作成されます。

この時点で Hello は実行可能です。

アプリ実行

Hello を実行してみます。

  1. パッケージ・エクスプローラで「Hello」を選択
  2. 「実行」->「実行」でダイアログを開く
  3. 実行する方法で「Android アプリケーション」を選択して、「OK」をクリック

AVD が起動されて、アプリケーションがロード/実行されます。

(AVD が最初の起動だと、遅くて失敗するかも。。。)

しばらくすると、DDMS のコンソールでインストール成功のメッセージが出ます。

エミュレータのアプリランチャを確認してみると Hello がインストールされています。

20120406224923

Hello を実行するとメッセージが表示されました。成功。

20120406224924

ちょいと変更

何か作った感が薄いので、アプリケーションのメッセージをちょっと変更してみたいと思います。

  • (変更前) 「Hello, World, HelloActivity!」
  • (変更後) 「皆さん、こんにちは!」

Eclipse で Hello > src > com.example > HelloActivity.java を開くと以下のようにな

っています。

package com.example;

import android.app.Activity;
import android.os.Bundle;

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

アクティビティとは何ぞや? など開発の基礎については以下のページあたりに解説されてます。

ここで setContentView で設定されているビューは R.layout.main です。

R クラスは Hello > gen > R.java に定義されています。

これは、 Hello > res 以下の XMLの定義ファイルを元に生成されたものです。

Hello > res > layout > main.java は以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
</LinearLayout>

LinearLayout/TextView/@android:text が表示メッセージのテキストのようです。

テキストは直値でなく "@string/hello" の形式でリソースを参照しています。

Hello > res > values > strings.xml は以下のようになっています。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, HelloActivity!</string>
    <string name="app_name">Hello</string>

</resources>

では、resources/string[@name="hello"] の内容を変更してみます。

(変更前) <string name="hello">Hello World, HelloActivity!</string>
(変更後) <string name="hello">皆さん、こんにちは!</string>

変更後、保存(Ctrl+S)して、「Hello」をもう一度実行します。

で、エミュレータを確認します。

20120406225438

メッセージが変更されました。


参考

Android Developers*1 の チュートリアル。(Hello World もありますね)

----

以下は、前に日記に貼った図。

(アプリケーションのイメージ)

Android の アプリケーション

アクティビティのライフサイクル (Android Developers の図が理解できず自分なりに書いたもの)

Android Activity Lifecycle

AVD を作る

21:55 | AVD を作る - lnzntの Android 日記 を含むブックマーク はてなブックマーク - AVD を作る - lnzntの Android 日記 AVD を作る - lnzntの Android 日記 のブックマークコメント

環境構築ができたので、AVD (Android Virtual Device) を作ってみます。

AVD は仮想デバイスの構成です。これをエミュレータに実行させることで仮想デバイスを実現します。

Android SDK の設定

(Eclipse + ADT でなく)SDK のツールで AVD の作成/実行など管理をする場合は、ツールコマンドのパスを通しておく必要があります。

[Linux の場合]

export PATH=$PATH:~/android-sdks/tools:~/android-sdks/platform-tools

[Windows XP の場合]

環境変数 PATH に以下のフォルダを追加する。

  • C:\Documents and Settings\<ユーザ>\android-sdks\tools
  • C:\Documents and Settings\<ユーザ>\android-sdks\platform-tools

環境変数 ANDROID_SDK_HOME

AVD は環境変数 ANDROID_SDK_HOME で指定されるディレクトリ(フォルダ)の下の .android というサブディレクトリ(サブフォルダ)に作成されます。

また、エミュレータ実行時も上記の場所から AVD を探します。

Eclipse + ADT で AVD を作成/実行した場合も同様です。

環境変数 ANDROID_SDK_HOME が設定されてない場合、.android は以下の場所に作成されます。

[Linux の場合]

[Windows XP の場合]

  • C:\Documents and Settings\<ユーザ>\.android

AVD を作成

では、AVD (エミュレータ) を作成します。

eclipse を起動して以下を行います。

  1. 「ウィンドウ」->「AVD マネージャー」で AVD ダイアログを開く
  2. AVD ダイアログで「新規」をクリックして作成ダイアログを開く
  3. 以下を入力して「AVD の作成」をクリック
名前my_avd (任意でよい)
ターゲットAndroid 4.0.3 - API Level 15 (現状ではこれ一択)
SDカード - サイズ128 (任意でよい)
Snapshot使用可能にチェックする(そのほうが、二度目以降の起動が早くなる)
他の項目(ターゲットを選ぶと自動的に埋められる)

AVD の起動は AVD ダイアログで AVD を選択して「開始」をクリックします。

----

AVD は起ち上がるのに数分かかり非常に遅いです。

Eclipse でアプリを作成して実行しても、自動的に AVD が起動されますが(それが遅いためのタイムアウトで?)実行(AVD へのアプリインストール)が失敗することがあります。

上記の Snapshot は使用可能にしておいたほうがよいようです。(次回からの起動が早くなります)

コマンドラインでの AVD の作成/実行

コマンドラインでの作成/実行の仕方の主なものをメモしておきます。

詳しくは、以下を参照してください。

AVD の作成

$ android create avd -n my_avd -t 1  # 1 はターゲットID

ターゲット ID の確認方法

$ android list target
Available Android targets:
----------
id: 1 or "android-15"
     Name: Android 4.0.3
     Type: Platform
     API level: 15
     Revision: 3
     Skins: QVGA, WVGA854, WXGA720, WXGA800, WSVGA, WVGA800 (default), HVGA, WQVGA400, WQVGA432
     ABIs : armeabi-v7a

エミュレータ(AVD) の起動

$ emulator -avd my_avd

エミュレータが起動したところ

f:id:lnznt:20120406220930j:image

エミュレータについて詳細は以下を参照してください。

エミュレータは(一部できないこともありますが)実機の機能を模倣します。

特筆すべきは、ホストマシン含め仮想ネットワークを構築していることです。

仮想ネットワークは以下のようなイメージになっています。

20120406222121

  • エミュレータからインターネットにアクセスできます
  • 例えば、「http://10.0.2.2/」でホストの(Apacheなどの)Webページをブラウズできます
  • ホストからエミュレータ(10.0.2.15)へも通信できます(まだ試してませんが)
  • 仮想DNS はホストの情報を読み取って構築されます。最大4つです

----

私は実機を持ってないのでエミュレータの扱いにもたつきます。

最初、画面がロックされてて焦りました。(施錠アイコンを開錠アイコンにドラッグするとアンロックされます。[Menu]押下でもアンロックできます。)

f:id:lnznt:20120406223904j:image

*1Android Developers のページは日本語に切り替えられます。ただし翻訳されてないページもあります