Android Hacks - Hack57 syukudai

1,910 views

Published on

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。

http://www.oreilly.co.jp/books/9784873114569/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,910
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Android Hacks - Hack57 syukudai

  1. 1. ANDROID HACKS #57 ADB を使用する〜 EXTRA STAGE 〜 担当:なべべなべべ Twitter : @nave_aki 09/19/11
  2. 2. この資料について <ul><li>この資料は下記の本をベースに勉強会で作成した資料です。 </li></ul><ul><ul><li>『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊) </li></ul></ul><ul><li>この本の紹介ページが下記にあります。 </li></ul><ul><ul><li>http://www.oreilly.co.jp/books/9784873114569/ </li></ul></ul>09/19/11
  3. 3. アジェンダ <ul><ul><li>四つの難題 from kawara-tan </li></ul></ul><ul><ul><ul><li>ログバッファ編 </li></ul></ul></ul><ul><ul><ul><li>logcat 編 </li></ul></ul></ul><ul><ul><ul><li>標準出力編 </li></ul></ul></ul><ul><ul><ul><li>バグレポート編 </li></ul></ul></ul>09/19/11
  4. 4. 1. ログバッファ編 09/19/11
  5. 5. 1. ログバッファ? <ul><li>ログバッファとはログを溜めておく循環バッファのことらしい </li></ul><ul><li>logcat はログバッファを参照してログを印字するようだ </li></ul><ul><li>実はログバッファは複数種類があって、すべてのログが一つのログバッファに書き込まれるわけではないそうな </li></ul><ul><ul><li>main バッファ ・・・ 普通のログはここに書き込まれる </li></ul></ul><ul><ul><li>radio バッファ ・・・ 無線や電話関係のログはここに書き込まれる </li></ul></ul><ul><ul><li>events バッファ ・・・ イベント関係のログはここに書き込まれる </li></ul></ul><ul><li>参照するログバッファを指定するには </li></ul><ul><ul><li>adb logcat -b バッファ名 </li></ul></ul><ul><li>ってやればおk ( 指定しない場合は main バッファを参照する ) </li></ul>09/19/11
  6. 6. 2. logcat 編 09/19/11
  7. 7. 2. logcat コマンド? <ul><li>logcat コマンドは Android が吐くログを整形して印字してくれる スゴイやつだよ </li></ul><ul><li>ところで、ログには優先度があり、 logcat コマンドは優先度の低いログを印字しないよう指定ができます </li></ul><ul><li>以下、低->高 の順に優先度の種類を記します </li></ul><ul><ul><li>Verbose 冗長ログ。こんなの監視してるのは暇人 </li></ul></ul><ul><ul><li>Debug デバッグログ </li></ul></ul><ul><ul><li>Information 情報ログ </li></ul></ul><ul><ul><li>Warning 警告ログ </li></ul></ul><ul><ul><li>Error エラーログ </li></ul></ul><ul><ul><li>Fatal やばいログ。とにかくやばい </li></ul></ul>09/19/11
  8. 8. 2. logcat コマンド? <ul><li>android.util.Log パッケージをインポートして、以下のメソッドを使うことでログを出力できるよ </li></ul><ul><ul><li>Log.v(String tag, String msg) ・・・ Verbose 冗長ログ </li></ul></ul><ul><ul><li>Log.d(String tag, String msg) ・・・ Debug デバッグログ </li></ul></ul><ul><ul><li>Log.i(String tag, String msg) ・・・ Information 情報ログ </li></ul></ul><ul><ul><li>Log.w(String tag, String msg) ・・・ Warning 警告ログ </li></ul></ul><ul><ul><li>Log.e(String tag, String msg) ・・・ Error エラーログ </li></ul></ul><ul><ul><li>Log.wtf(String tag, String msg) ・・・ What a Terrible Failure これはひどいログ </li></ul></ul><ul><li>SDK ソースを確認したところ、上記メソッドで出力されるログは main バッファに書き込まれます </li></ul>09/19/11
  9. 9. 2. logcat コマンド? <ul><li>ログバッファの説明で書いたとおり、 logcat はログバッファの内容を印字します </li></ul><ul><li>logcat -d オプションをつけた場合とつけない場合の違いはログバッファの内容を印字した後の挙動 </li></ul><ul><ul><li>-d をつけた場合 ・・・ 現時点でログバッファに書きこまれている内容を印字した後、賢者となってコマンドを終了する </li></ul></ul><ul><ul><li>-d をつけない場合 ・・・ ログバッファの内容を印字した後も、コマンドは終了しないでログバッファをいやらしい目つきで監視し続ける。そしてログバッファに新しいログが書き込まれるとそれを即座に印字する </li></ul></ul>09/19/11
  10. 10. 3. 標準出力編 09/19/11
  11. 11. 3. 標準出力はどこにいくの? <ul><li>Android アプリケーションの標準出力・標準エラー出力は /dev/null に送られるので、通常目に入ることはありません </li></ul><ul><li>どうしても標準出力・標準エラー出力を確認したい人のために、それらをログに出力する方法が用意されています </li></ul>09/19/11
  12. 12. 3. 標準出力をログに吐く <ul><li>それでは、早速以下のコマンドを打ち込んでみましょう </li></ul><ul><li>$ adb shell stop $ adb shell setprop log.redirect-stdio true $ adb shell start </li></ul><ul><li>上記の設定はエミュレータ ( または実機 ) を終了するまで有効です </li></ul><ul><li>また、これらのログは以下の設定で出力されます </li></ul><ul><ul><li>タグ: stdout または stderr </li></ul></ul><ul><ul><li>優先度: I </li></ul></ul><ul><li>なお、常時上の設定を有効にしたい場合には、デバイス上の /data/local.prop に </li></ul><ul><ul><li>log.redirect-stdio true </li></ul></ul><ul><ul><li>とか書いておくといいらしいです </li></ul></ul>09/19/11
  13. 13. 4. バグレポート編 09/19/11
  14. 14. 4. バグレポート? <ul><li>bugreport コマンドを使うと、その時のデバイスの状態を印字することができます </li></ul><ul><li>具体的にどんな情報がでるかというと </li></ul><ul><ul><li>dumpstate コマンドの実行結果 </li></ul></ul><ul><ul><li>dumpsys コマンドの実行結果 </li></ul></ul><ul><ul><li>logcat コマンドの実行結果 (main, events, radio バッファそれぞれについて ) </li></ul></ul><ul><li>をまとめて出力してくれる </li></ul><ul><li>出力されるデータ量が多いのでファイルにでもリダイレクトすんのがいーんじゃねーの? </li></ul>09/19/11
  15. 15. 参考 URL <ul><li>Android Developers </li></ul><ul><ul><li>logcat http://developer.android.com/guide/developing/tools/logcat.html </li></ul></ul><ul><ul><li>Reading and Writing Logs http://developer.android.com/guide/developing/debugging/debugging-log.html </li></ul></ul>09/19/11

×