▼Androidメモ▼
Androidツール
Androidツール
ツール 説明 Android Emulator Androidアプリを実行可能なエミュレータ Android Development Tools
Plugin for the Eclipse IDE(ADT)EclipseでAndroidアプリを開発するためのプラグイン Dalvik Debug Monitor Service(ddms) エミュレータのプロセス管理
デバッグ支援Android Debug Bridge(adb) アプリケーションファイル(*.apk)のインストール
コマンドラインからエミュレータにアクセスAndroid Asset Packageing Tool(aapt) Androidアプリのバイナリやリソースを含む
アプリケーションファイル(*.apk)を作成Android Interface Description Language(aidl) プロセス間インタフェース用のコード作成 sqlite3 SQLiteデータにアクセス Traceview トレースログを分析 mksdcard エミュレータが利用する外部記憶カードのイメージ作成 dx Javaバイトコード(*.class)をAndroidバイトコード(*.dex)に変換 activityCreator Androidアプリのコンパイルに利用するAntのビルドファイルを作成
adb
adbコマンド
操作 書式 コマンド インストール adb install APKファイル adb install HelloWorld.apk アンインストール adb uninstall パッケージ名 adb uninstall net.npaka.helloworld LogCat adb devices adb logcat *:E
adb logcat -s debug端末一覧 adb devices adb devices
List of devices attached
HT9CVP823326 device
CPU負荷 adb shell top | grep プロセス名
adb shell top -d 表示プロセス数 -m 更新間隔
adb shell top | grep net.npaka.helloworld
adb shell top -d 5 -m 10
メモリ簡易出力 adb shell procrank adb shell procrank
VSS(Virtual Set Size) 仮想メモリの消費量 RSS(Resident Set Size) 物理メモリの消費量 PSS(Proportional Set Size) プロセスのヒープ所有サイズ USS(Unique Set Size) プロセスのヒープ利用サイズ メモリ詳細出力 adb shell dumpsys meminfo パッケージ名 adb shell dumpsys meminfo net.npaka.helloworld 内部ストレージ容量出力 adb shell df /data adb shell df /data Monkeyテスト adb shell monkey -v 1 -p パッケージ名 イベント数 adb shell monkey -v 1 -p net.npaka.helloworld 500 DDMS起動 ddms ddms エミュレータ起動 emulator -avd 仮想デバイス名 emulator -avd X10 shell起動 adb shell adb shell ファイルをエミュレータへコピー adb push ローカルファイル デバイスファイル
※Permission Deniedadb push test.png /sdcard ファイルをエミュレータからのコピー adb pull デバイスファイル ローカルファイル adb pull /sdcard/test.png test.png エミュレータのsystem/app
へのインストールエミュレータの起動
フォルダを読み書き可能に
インストール
emulator -avd Android22 -partition-size 100
adb -s emulator-5554 shell
mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
chmod 777 /system/app
exit
adb -s emulator-5554 push HelloWorld.apk /system/app/root取得端末のsystem/app
へのインストールフォルダを読み書き可能に
インストールadb shell
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
chmod 777 /system/app
exit
adb push HelloWorld.apk /system/app/
shellコマンド
操作 書式 コマンド カレントディレクトリの表示 pwd pwd ファイル/ディレクトリ一覧の表示 ls ls ディレクトリの移動 cd パス cd sdcard ディレクトリの生成 mkdir ディレクトリ名 mkdir tmp ディレクトリの削除 rmdir ディレクトリ名 rmdir tmp ファイルの生成 cat > ファイル名
ファイルに書き込む文字列
[Ctl-Dで終了]cat > test.txt
hogeファイル内容の表示 cat ファイル名 cat test.txt Shellの終了 exit exit
DDMS
DDMS
コマンドラインで「ddms」、またはEclipseのメニュー「Window→Open Perspective→Other→DDMS」で起動。
DDMS - Devicesビュー
デバイス一覧とプロセス一覧の表示を行う。
デバイスまたはスレッドを選択後、アイコン押下で以下の操作が可能。
アイコン 説明 Debug the selected process プロセスのデバッグ Update heap Heapビューの更新 Dump heap file ヒープダンプの生成 Cause gc ガーベージコレクション Update Threads Threadsビューの更新 Start Method Profiling メソッドプロファイルの開始 STOP スレッド停止 カメラ スクリーンキャプチャ
DDMS - Emulator Controlビュー
エミュレータの電話状態や位置情報の操作を行う。
Devicesでエミュレータを選択することで操作可能になる。
操作 項目 説明 電話状態(Telephony Status) Voice 音声通信(unregistered/home/roaming/searching/denied) Speed 通信速度(Full/GMS/HSCSD/GPRS/EDGE/UMTS/HSDPA) Data データ通信(unregistered/home/roaming/searching/denied) Latency レイテンシー(None/GPRS/EDGE/UMTS) 電話アクション(Telephony Actions) Voice 通話着信 SMS SMS着信 位置情報操作(Location Controls) Manual 緯度・経度入力 GPX GPX入力 KML KML入力
![]()
DDMS - Heapビュー
プロセスのヒープ状態の表示を行う。
ガーベージコレクション毎に更新される。
グループ 項目 説明 ヒープ ID ID Heap Size 確保しているヒープサイズ Allocated 利用しているヒープサイズ Free フリーのヒープサイズ % Used Dalvikヒープの利用率 # Objects オブジェクト数 種別ヒープ Type 種別
free 通話着信 data object 数 class object トータルサイズ 1-byte array byte[]/boolean[] 2-byte array short[]/char[] 3-byte array object[]/int/float[] 8-byte array long[]/double[] non-Java object Java以外のオブジェクト Count 数 Total Size トータルサイズ Smallest 最小サイズ Largest 最大サイズ Median 中間サイズ Average 平均サイズ
DDMS - Allocation Tracker
アプリケーションで任意の操作を行った時のメモリ割当状態を調べる。
- Devicesビューでプロセスを選択。
- Allocation TrackerでStart Trackingボタンを押す。
- アプリケーションで任意の操作を行う。
- GetAllocationsボタンを押して情報取得。
項目 説明 Alloc Order メモリ割当順 Allocation Size メモリ割当サイズ Allocated Class メモリ割当クラス Thread Id スレッドID Allocated in 割当クラス名 Allocated In 割当メソッド名
項目 説明 Class クラス Method メソッド File ファイル Line 行数 Native ネイティブ
DDMS - Threadsビュー
プロセスのスレッド状態の表示を行う。
項目 説明 ID VMに割り当てられたユニークなスレッドID。 Tid LinuxスレッドID。 Status スレッド状態。
デーモンスレッドには*が付加される。
running 実行中 sleeping Thred.sleep()中 monitor モニタのロック獲得の待機中 wait Object.wait()中 native ネイティブコード実行中 vmwait VMリソース待機中 zombie スレッド終了中 utime ユーザーコードの実行に費やした累積時間。
単位はjiffies(10ms)。stime システムコードの実行に費やした累積時間。
単位はjiffies(10ms)。Name スレッド名
![]()
DDMS - LogCat
ログ出力を行う。
アイコン 説明 V VERBOSEログの出力のオン・オフ。
android.util.Log.v("debug","flag");D デバッグ(DEBUG)ログの出力のオン・オフ。
android.util.Log.d("debug","flag");I 情報(INFO)ログの出力のオン・オフ。
android.util.Log.i("debug","flag");W 警告(WARN)ログの出力のオン・オフ。
android.util.Log.w("debug","flag");E エラー(ERROR)ログの出力のオン・オフ。
android.util.Log.e("debug","flag");+ フィルタの追加 Edit Filter フィルタの編集 - フィルタの削除 Clear Log ログのクリア
ログの情報は次の通り。
項目 説明 Time 時間 pid プロセスID tag タグ Message メッセージ
DDMS - コンソール
コンソール出力を行う。
Android OSの起動、アプリのインストール成功などユーザーへの通知情報を表示。
項目 コンソールのクリア スクロールロック コンソールのピン留め 選択されたコンソールの表示 コンソールを開く
Traceview
Traceview
チューニング箇所前後にコードを埋め込む。
以下の命令で「/sdcard/debug.trace」にトレース情報を出力。
操作 書式 トレース開始 Debug.startMethodTracing("debug");トレース完了 Debug.stopMethodTracing();test.traceの解析 adb pull /sdcard/debug.trace ./
traceview ./debug.traceAndroidManifest.xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
グラフの横軸は「時間(ミリ秒)」、縦軸は「負荷」、行は「スレッド」。
操作 説明 main メインスレッド Binder Thread リモートでのメソッド実行の要求を受け付けるサーバスレッド HeapWorker ヒープ処理を行うスレッド
解析するパラメータは次の通り。
Findにメソッド名を入力することで検索可能。
パラメータ名 説明 name 対象メソッド名 Incl% Inclusive時間のトータルタイムからのパーセンテージ Inclusive そのメソッドと、そのメソッドから呼ばれたメソッドの実行時間 Excl% Exclusive時間のトータルタイムからのパーセンテージ Exclusive そのメソッドの実行時間 Cals+RecurCalls/Total このメソッドが何回呼ばれたか/再帰で何回呼ばれたか Time/Call メソッドの実行時間(ミリ秒)
−戻る−