アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
adbコマンドでデバッグ
adb(Android Debug Bridge)とは、エミュレータまたは接続されているAndroidデバイスと通信できるように多目的なコマンドラインツールです。
詳しくはこちら: http://developer.android.com/intl/ja/guide/developing/tools/adb.html
adbコマンドはいろんな使い方がありますが、ここで自分がアプリのデバッグなどでよく使っているものを紹介します。
詳しくはこちら: http://developer.android.com/intl/ja/guide/developing/tools/adb.html
adbコマンドはいろんな使い方がありますが、ここで自分がアプリのデバッグなどでよく使っているものを紹介します。
adb devices - 接続されてるエミュレータまたはデバイスの一覧を表示
adb logcat - ログ出力
V - 冗長(最も低い優先順位)
D - デバッグ
I - 情報(デフォルトの優先順位)
W - 警告
E - エラー
F - 致命的な
S - サイレント(何も今まで印刷されないされている最高の優先度)
アプリからログを出力する
adb logcat | grep V/
とかでは見たいログだけ出力することができます。
adb shell - デバイスまたはエミュレータにリモートシェルを実行する
adb push - ローカルからファイルまたはディレクトリをデバイスへコピーする
adb pull - デバイスからファイルまたはディレクトリをローカルへコピーする
adb install (apkファイル) - アプリをインストール
adb uninstall (パッケージ名) - アプリをアンインストール
複数エミュレータまたはデバイスを接続して実行されている状態ではターゲットを指定しないといけません。方法は
adb -s <serialNumber> <command>
serialNumberってなんだ? adb devicesで確認しましょう。
たとえばエミュレータのログをみたいときは
$ adb logcat -s emulator-5556 などで順番変えても使用できません。
以上
$ adb devices List of devices attached emulator-5554 device 1000cd14058f device HT963LF01040 device
adb logcat - ログ出力
$ adb logcat .... D/dalvikvm( 184): GC_CONCURRENT freed 231K, 4% free 12102K/12551K, paused 4ms+5ms W/MediaScanner( 345): Error opening directory '/mnt/sdcard/.android_secure/', skipping: Permission denied. V/MediaScanner( 345): pruneDeadThumbnailFiles... android.database.sqlite.SQLiteCursor@413b7760 V/MediaScanner( 345): /pruneDeadThumbnailFiles... android.database.sqlite.SQLiteCursor@413b7760 D/dalvikvm( 184): GC_CONCURRENT freed 328K, 5% free 12388K/12935K, paused 6ms+7ms D/dalvikvm( 530): GC_CONCURRENT freed 101K, 77% free 483K/2048K, paused 1ms+4ms D/dalvikvm( 530): Debugger has detached; object registry had 1 entries I/AndroidRuntime( 530): NOTE: attach of thread 'Binder Thread #3' failed D/dalvikvm( 541): Not late-enabling CheckJNI (already on) I/ActivityManager( 85): Start proc alone.advent.android.app for activity alone.advent.android.app/.MyListView: pid=541 uid=10040 gids={} I/dalvikvm( 541): Turning on JNI app bug workarounds for target SDK version 4... W/NetworkManagementSocketTagger( 85): setKernelCountSet(10040, 1) failed with errno -2 V/PhoneStatusBar( 141): setLightsOn(true) I/ARMAssembler( 34): generated scanline__00000177:03515104_00009002_00000000 [148 ipp] (173 ins) at [0x412ef4b0:0x412ef764] in 883097 ns V/TESTLOG ( 541): xxxxxx V/TESTLOG ( 541): yyyyyy D/gralloc_goldfish( 541): Emulator without GPU emulation detected.ログメッセージにはタグとそれに関連付けられた優先度を持っています。以下はタグの優先順位、最下位から最上位を表します。
V - 冗長(最も低い優先順位)
D - デバッグ
I - 情報(デフォルトの優先順位)
W - 警告
E - エラー
F - 致命的な
S - サイレント(何も今まで印刷されないされている最高の優先度)
アプリからログを出力する
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v("TESTLOG","xxxxxx"); Log.v("TESTLOG","yyyyyy"); } }
$ adb logcat .... V/PhoneStatusBar( 141): setLightsOn(true) I/ARMAssembler( 34): generated scanline__00000177:03515104_00009002_00000000 [148 ipp] (173 ins) at [0x412ef4b0:0x412ef764] in 883097 ns V/TESTLOG ( 541): xxxxxx ←出力されたログ V/TESTLOG ( 541): yyyyyy ←出力されたログ D/gralloc_goldfish( 541): Emulator without GPU emulation detected. ....端末によってよく(みたくもない)無駄なログを流してくるので
adb logcat | grep V/
とかでは見たいログだけ出力することができます。
adb shell - デバイスまたはエミュレータにリモートシェルを実行する
adb push - ローカルからファイルまたはディレクトリをデバイスへコピーする
adb pull - デバイスからファイルまたはディレクトリをローカルへコピーする
adb install (apkファイル) - アプリをインストール
adb uninstall (パッケージ名) - アプリをアンインストール
$ adb install Myapp.apk 2187 KB/s (1367473 bytes in 0.610s) pkg: /data/local/tmp/Myapp.apk Success .... .... $ adb uninstall project.android.myapp Success- 特定のエミュレータまたはデバイスにコマンドを使う
複数エミュレータまたはデバイスを接続して実行されている状態ではターゲットを指定しないといけません。方法は
adb -s <serialNumber> <command>
serialNumberってなんだ? adb devicesで確認しましょう。
$ adb devices List of devices attached emulator-5554 device 1000cd14058f device HT963LF01040 deviceこのときemulator-5554、1000cd14058f、HT963LF01040がserialNumberとなります。
たとえばエミュレータのログをみたいときは
$ adb -s emulator-5554 logcat※ここで注意
$ adb logcat -s emulator-5556 などで順番変えても使用できません。
以上
COMMENT