デバッグ
エミュレータ
エミュレータで再現されるハードウェア
エミュレータで再現されるハードウェアをAndroid仮想デバイス(AVD:Android Virtual Device)という。
- ARMバージョン5以降のCPU
- 16ビットカラーの液晶ディスプレイ(1ピクセルあたり16ビットのカラー(6万5536色)を表現可能。
- Qwertyキーボード, Dpad/Phoneボタン
- サウンドチップ
- フラッシュメモリ
- SIMカードがシミュレートされたGSMシステム(Global System for Mobile Communications)
- ビデオカメラ
- 加速度計などのセンサー
Android仮想デバイスの作成
toolsフォルダのandroid create avdコマンドを発行する(GUIでもできる)
Android create avdコマンドの使い方
引数 | 役割 |
---|---|
-n <avd_name>
|
作成するAVDの名前 |
-t <targetID>
|
AVDのOSのバージョンを指定する。OSのバージョンはAndroid2.3.3 APIレベル10の場合は「18」などandroid list targetsコマンドで表示する |
-c <size> [K M] |
エミュレータで使用するSDカードの容量を指定する |
androidコマンドのまとめ
書式 | 役割 |
---|---|
create avd -n <avd_name> -t <targetID> -c <size> [K M] |
AVDを新規作成 |
move avd -n <avd_name> -r <変更するavd_name>
|
AVDの名前変更 |
delete avd -n <avd_name>
|
AVDを削除 |
list avds | 一覧を表示 |
エミュレータの起動
emulatorコマンドでAVDを起動できる。
emulator -avd `<avd_name>`
emulator @`<avd_name>`
エミュレータのコンソール機能
エミュレータにはコンソール機能がついている。エミュレータが起動している状態でtelnetコマンドを実行する
(telnet localhost <port_no>
)ポート番号はウィンドウタイトルの位置に表示されている
バッテリーをエミュレート
接続したら、power status unknownなどでバッテリーの状態を変更できる
powerコマンドの使い方
引数 | 役割 |
---|---|
display | バッテリーや充電の状態を表示する |
capacity <percent>
|
バッテリーの充電%を変更する |
present <true/false>
|
充電器につながってるどうかを設定する |
status <unkown/charging/discangeing/not-charging/full>
|
バッテリーの状態を指定した状態に設定する |
ネットワーク速度をエミュレート
network speedコマンドにより様々な環境下でのテストが可能となる
network speedコマンドの使い方
引数 | 役割 |
---|---|
gsm/hcsd/gprs/edge/umts/hsdpa | 各通信のネットワークスピードになる |
full | 制限なし |
<num> |
上がりと下りのスピードが同じ |
<up> :<down>
|
上がりと下りのスピードをそれぞれ指定する |
DDMS
DDMS(Dalvik Debug Monitor Server)はバグの早期発見やテストに非常に役立つツール。
DDMSを起動する
エミュレータが起動している状態でddmsコマンドを実行する
電話とSMSの送信
Emulator ControlタブをクリックしIncoming number欄に電話番号を入れVoiceにチェックマークを付けて、Callボタンをクリックする
SMSを送信する場合は、Emulator ControlタブでSMSを選びMessageに送信したい文字を入力してCallボタンをクリックする
DDMSの画面
Deviceペイン
開発用のPCに接続しているAndroidデバイスと各プロセスの一覧を表示する。プロセスを強制停止したり、GCを発生させることが出来る(ゴミ箱のアイコン)
Infoタブ
選択されたプロセスのプロセスID、VMバージョン情報が表示される
Threadsタブ
選択したプロセスのスレッド一覧が表示される
VM Heapタブ
選択したプロセスでGCを行った場合に更新されたヒープの統計データが表示される。
Allocation Trackerタブ
メモリアロケーションの追跡が表示される
Emulator Controlタブ
エミュレータに電話を掛けたり、SMSメッセージを送ることが出来る。疑似ロケーションを送ることでGPS情報をシミュレーションすることもできる。
Logcatペイン
端末のlogcat情報を表示できる
スクリーンショット
スクリーンショットを取るには、プルダウンメニューから[Device]->[Screen Capture]を選択する
adb
adb(Android Debug Bridge)コマンドラインで開発用PCとAndroid端末を接続し、操作するためのツール
adbの構成
adbは開発用PCで動作する「クライアント」「サーバ」とAndroid端末で動作する「デーモン」の3つから構成される。
adb client
adbコマンドのこと。adb logcatやadb devices等のコマンドがある。adb clientとadb serverのやり取りはTCPポート5037が使われる
adb server
adb clientでの操作をAndroid端末に送信するもの。adb clientが発行したコマンドをadb daemonに仲介する。
adb daemon
Android端末(実機、エミュレータ)で動くバックグラウンドプロセス。adb serverからのコマンドを実行し結果を返す。adb serverとのやり取りはTCPポートの5555-5585の奇数ポートを利用する
adbのコマンド
エミュレータがadb接続されるかどうかを確認するにはadb devicesコマンドを使用する
主なadbコマンドの一覧
コマンド | 役割 |
---|---|
adb start-server | adb serverを起動する |
adb kill-server | adb serverを停止する |
adb devices | adb接続されている端末の一覧を表示する |
adb push | Android端末にファイルを書き込む adb push <開発用PCのファイル名> |
adb pull | Android端末からファイルを取り込む adb pull <開発用PCのファイルパス> |
adb install | apkファイルを指定して端末にインストールする |
adb uninstall | パッケージ名を指定して、アプリをアンインストールする |
階層ビューワ(Hierarchy Viewer)
Androidのユーザインターフェース部分を階層表示するビューワ。レイアウトの最適化に役立つ。
階層ビューワを起動する
エミュレータを起動した状態で、hierarchyviewerコマンドを入力する
Load View Hierarchyボタンでレイアウトビューが表示される
Inspect Screenshotボタンでパーフェクトピクセルビューが表示される
Traceview
処理のボトルネックを調べるツール。
Traceviewを使う
Android SDKに含まれるツール。使うには準備が必要である。
android.os.Debugをimportしたうえで、計測したい場所をDebug.startMethodTracing(<ファイル名>);とDebug.stopethodTracing();で囲む。
計測結果は/sdcard/<ファイル名>.traceに書き出される。SDカードに出されるので、マニフェストファイルにandroid.permission.WRITE_EXTERNAL_STORAGEを指定する必要がある
プログラムを実行することで計測結果のファイルを取得できる。
adb pullコマンドもしくは、DDMSのエクスプローラ機能を利用してファイルを確認できる
traceview <ファイル名>コマンドで計測結果をグラフィカルに表示できる。
mksdcardコマンド、androidコマンド
仮想SDカードを作成する
mksdcardコマンドで、エミュレータで使用する仮想SDカードを作成できる。AVD作成時にも指定できるがmsdcardコマンドであとで変更もできる
fat32形式で作成でき容量は9MB以上。
作成した、仮想SDカードをエミュレータで使用するには、-sdcardオプションをつけてemulatorコマンドを実行する。
プロジェクトを作成する
androidコマンドでAndroid仮想デバイスの作成・削除・参照、プロジェクトの作成・更新、AndroidSDKの更新ができる。
新規作成するにはandroid create projectコマンドを使用する。
monkeyツール
アプリケーションに対して、クリック、タッチ、ジェスチャをランダムで実行することでバグを発見するツール。
monkeyの起動
エミュレータが起動しているか、USBで認識されている端末がある状態で、adb shell monkeyコマンドを実行する。
adb shell monkey [options] <event-count>
のevent-countはイベントのカウント数
monkeyツールの主なオプション一覧
オプション | 役割 |
---|---|
-v | 出力レベルの調整0(デフォルト)~2の範囲で指定する |
-s | 疑似ランダムイベントのもとになるSeed値を指定する |
-throttle | イベントの間隔値をミリ秒で指定する |
-p | テストをするパッケージ名を指定する |
monkeyツールを使うと簡単にUIイベントのストレステストができる。ストレステストをする際はthrottleオプションを指定すると良い。(指定しないと0になるため)