Android アプリケーション hello world
[履歴] [最終更新] (2017/05/04 16:18:55)

概要

サンプル Android アプリケーションを作ることで、2017/04/17 現在における基本的な開発手順を把握します。

Android Studio インストール

事前に JDK をインストールしてから、こちらのページを参照して Android Studio をダウンロードおよびインストールします。

サンプルアプリケーションの作成

Start a new Android Studio project をクリックして新規プロジェクトを作成します。

Uploaded Image

Application name と Company domain を入力して Next をクリックします。

Uploaded Image

今回は Phone and Tablet を選択して Next をクリックします。

Uploaded Image

簡単のため、Empty Activity を選択して Next をクリックします。

Uploaded Image

Activity Name および Layout Name は特に変更せずに Finish をクリックします。

Uploaded Image

AVD の作成

作成したサンプルアプリケーションを実機で起動することもできますが、Android Virtual Device (AVD) とよばれる仮想マシンで動作させると便利です。AVD は画面サイズなどを指定して予め作成しておく必要があります。似ていますが adb コマンドとは別物です。他の用語にハードウェアを抽象化する Hardware Abstraction Layer (HAL) や Android アプリが動くランタイム Android Runtime (ART) があります。

Tools → Android → AVD Manager → Create Virtual Device をクリックします。

Uploaded Image

Phone カテゴリーから適当なデバイスを選択して Next をクリックします。

Uploaded Image

System image を選択します。初回はダウンロードが必要です。

Uploaded Image

同意してダウンロードして Next をクリックします。

Uploaded Image

最終確認画面ではそのまま Finish をクリックします。

Uploaded Image

一覧に追加されたことが確認できます。

Uploaded Image

AVD でアプリケーションを起動

Run → Run 'app' をクリックしてサンプルアプリケーションを起動します。先程追加した AVD を選択して OK をクリックします。

Uploaded Image

起動に成功すると以下のような画面になります。

Uploaded Image

デバッグ関連

作成した雛形アプリケーションをカスタマイズする中で必要となる、基本的なデバッグ方法をまとめます。EclipseIntelliJ IDEA と同様に、Android Studio でもブレークポイントの設定やステップ実行が行えます。あるいは、以下に記載のトーストやログを利用したプリントデバッグも行えます。

インポート

  • Code → Optimize Imports でインポート文を整理できます。
  • インポートされておらず参照できないエラー時には Alt + エンターで import 文を挿入できます。
    • Alt + エンターはエラー時の対応方法を提示する import に限らない汎用的なショートカットです。

トーストの表示

デバッグを意図した機能ではありませんが、ちょっとしたプリントデバッグに利用できます。以下の例では activity_main.xml に追加した id myButton のボタンウィジェットをクリックするとトーストが表示されます。イベントリスナの記述方法については、こちらの公式ドキュメントをご参照ください。二つの方法が記載されています。Toast.LENGTH_LONGToast.LENGTH_SHORT に変更することで、トーストの表示時間を短くできます。

実装方法 1 MainActivity.java

package com.example.mycompany.myapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button)findViewById(R.id.myButton);
        button.setOnClickListener(
                new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this, "Toast String", Toast.LENGTH_LONG).show();
                    }
                }
        );
    }
}

実装方法 2 MainActivity.java

package com.example.mycompany.myapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button)findViewById(R.id.myButton);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Toast.makeText(this, "Toast String", Toast.LENGTH_SHORT).show();
    }
}

ログの出力

トーストと同様にプリントデバッグに利用できます。公式ドキュメントはこちらです。

MainActivity.java

package com.example.mycompany.myapp;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button)findViewById(R.id.myButton);
        button.setOnClickListener(
                new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.d(TAG, "debug level log message.");
                    }
                }
        );
    }
}

View → Tool Windows → Android Monitor でログを確認できます。

05-02 14:50:50.655 25352-25352/com.example.mycompany.myapp D/MainActivity: debug level log message.
05-02 14:50:52.503 25352-25352/com.example.mycompany.myapp D/MainActivity: debug level log message.
05-02 14:50:53.201 25352-25352/com.example.mycompany.myapp D/MainActivity: debug level log message.
関連ページ
    概要 Maven, sbt, cmake, make 等と同様に、ビルドツールとして有名な Gradle の基本的な使い方を、特に Java をビルド対象としてまとめます。2017/05/08 現在、Android における標準のビルドツールです。 参考ドキュメント 環境構築 Installation Creating New Gradle Builds
    概要 こちらのページの情報をもとに構築した開発環境を想定し、Android アプリケーションのコンポーネントの一つである Activity についてライフサイクルの様子を把握するための簡易サンプルコードです。 The Activity Lifecycle ライフサイクルの状態遷移図 簡易サンプルコード
    概要 電子工作や製品のプロトタイピング (例『地球規模で遠隔操作できるブルドーザー』) で利用される Raspberry Pi 3 について、こちらのページで構築した環境で Android Things アプリケーションを開発できます。 本ページでは、簡単な例として LED を点灯させるアプリケーションを扱います。より実用的なアプリケーションを開発する際には
    概要 こちらのページに記載のとおり、Android アプリケーションは一つ以上の Activity、Service を含みます。Service は UI をもたず、長時間かかる処理をバックグラウンドで行うためのコンポーネントです。こちらのページの情報をもとに構築した開発環境を想定し、基本的な使い方をまとめます。 関連する公式ドキュメント
    概要 JDK でインストールされる keytool コマンドの利用方法を、『オレオレ (サーバ/クライアント) 証明書の発行』で利用する openssl コマンドと対比してまとめます。keytool コマンドは、こちらのページで hello world チュートリアルを記載した Android Studio のドキュメント