サンプル Android アプリケーションを作ることで、2017/04/17 現在における基本的な開発手順を把握します。
Android Studio インストール
事前に JDK をインストールしてから、こちらのページを参照して Android Studio をダウンロードおよびインストールします。
サンプルアプリケーションの作成
Start a new Android Studio project をクリックして新規プロジェクトを作成します。
Application name と Company domain を入力して Next をクリックします。
今回は Phone and Tablet を選択して Next をクリックします。
簡単のため、Empty Activity を選択して Next をクリックします。
Activity Name および Layout Name は特に変更せずに Finish をクリックします。
AVD の作成
作成したサンプルアプリケーションを実機で起動することもできますが、Android Virtual Device (AVD) とよばれる仮想マシンで動作させると便利です。AVD は画面サイズなどを指定して予め作成しておく必要があります。似ていますが adb コマンドとは別物です。他の用語にハードウェアを抽象化する Hardware Abstraction Layer (HAL) や Android アプリが動くランタイム Android Runtime (ART) があります。
Tools → Android → AVD Manager → Create Virtual Device をクリックします。
Phone カテゴリーから適当なデバイスを選択して Next をクリックします。
System image を選択します。初回はダウンロードが必要です。
同意してダウンロードして Next をクリックします。
最終確認画面ではそのまま Finish をクリックします。
一覧に追加されたことが確認できます。
AVD でアプリケーションを起動
Run → Run 'app' をクリックしてサンプルアプリケーションを起動します。先程追加した AVD を選択して OK をクリックします。
起動に成功すると以下のような画面になります。
デバッグ関連
作成した雛形アプリケーションをカスタマイズする中で必要となる、基本的なデバッグ方法をまとめます。Eclipse と同様に、Android Studio でもブレークポイントの設定やステップ実行が行えます。あるいは、以下に記載のトーストやログを利用したプリントデバッグも行えます。
インポート
- Code → Optimize Imports でインポート文を整理できます。
- インポートされておらず参照できないエラー時には Alt + エンターで import 文を挿入できます。
- Alt + エンターはエラー時の対応方法を提示する import に限らない汎用的なショートカットです。
トーストの表示
デバッグを意図した機能ではありませんが、ちょっとしたプリントデバッグに利用できます。以下の例では activity_main.xml に追加した id myButton のボタンウィジェットをクリックするとトーストが表示されます。イベントリスナの記述方法については、こちらの公式ドキュメントをご参照ください。二つの方法が記載されています。Toast.LENGTH_LONG
を Toast.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.
関連記事
- Spring Security フォームログインのサンプルコードSpring フレームワークによる Web アプリケーション開発で、ログイン処理を実装する際は Spring Security が便利です。ここでは特に Spring Boot で Web アプリケーションを開発する場合を対象とし、フォームによる ID/Password ログインを行うためのサンプルコードをまとめます。 公式ドキュメント [Spring Security チュートリアル](http...
- Java配列の宣言方法 (C/C++との違い)Javaの配列 Javaの配列宣言方法はC/C++と似ているようで若干異なる。 初期化しない場合 C/C++の int array[10]; はJavaでは int array[] = new int[10]; となる。同様にC/C++の int array[3][3]; はJavaでは int array[][] = new int[3][3]; となる。 初期化
- PlantUML による UML 図の描き方PlantUML はテキスト形式で表現されたシーケンス図やクラス図といった UML (Unified Modeling Language) 図の情報から画像を生成するためのツールです。簡単な使い方をまとめます。 インストール方法の選択 Atom や Eclipse のプラグインをインストールしてエディタから利用する方法、JAR をダウンロードして Java コマンドで実行する方法、Redmine ...
- Akka HTTP サンプルコード (Scala)Akka アクターを用いて実装された汎用 HTTP フレームワークです。Spray の後継です。コアモジュールである akka-http-core は 2016/2/17 に experimental が外れました。akka-http などのいくつかのサブモジュールは 2016/3/1 現在 experimental のままですが、基本的な
- Kestrel の使用例Kestrel は Message Queue (MQ) の実装のひとつです。一般に MQ はアプリケーション間やプロセス間、スレッド間で非同期に通信するために用いられます。メッセージの送信側は MQ に書き込めば受信側の応答を待たずに次の処理に非同期に進むことができます。Kestrel はわずか 2500 行程の Scala で実装されており JVM で動作します。MQ 自体はメモリ上に存在する...