▼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 Denied
adb 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
アプリケーションで任意の操作を行った時のメモリ割当状態を調べる。
  1. Devicesビューでプロセスを選択。
  2. Allocation TrackerでStart Trackingボタンを押す。
  3. アプリケーションで任意の操作を行う。
  4. 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.trace
AndroidManifest.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 メソッドの実行時間(ミリ秒)



−戻る−