Android Hacks - Hack59
Upcoming SlideShare
Loading in...5
×
 

Android Hacks - Hack59

on

  • 1,455 views

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

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

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

Statistics

Views

Total Views
1,455
Views on SlideShare
1,454
Embed Views
1

Actions

Likes
1
Downloads
3
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Android Hacks - Hack59 Android Hacks - Hack59 Presentation Transcript

  • ANDROID HACKS #59 Traceview を使う 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
  • この資料について
    • この資料は下記の本をベースに勉強会で作成した資料です。
      • 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)
    • この本の紹介ページが下記にあります。
      • http://www.oreilly.co.jp/books/9784873114569/
    09/19/11
  • アジェンダ
    • Traceview とは
      • 概要
    • Traceview を使うには
      • SD カードをマウントする
      • Trace ログを生成する
      • Trace ログを引っこ抜く
    • Traceview でログを解析する
      • Traceview 実行
      • タイムラインパネル
      • プロファイルパネル
      • 解析方法
    09/19/11
  • 1. Traceview とは 09/19/11
  • 1. 概要
    • デバイス上で動く Android アプリケーションのパフォーマンスをグラフィカルに解析できるデバッグツール
    • 処理が重くなる箇所を見つけ、最適化すべきメソッドを特定できる
    • Trace 対象は VM 全体
    • ツールを使うには以下のステップが必要
      • SD カードをマウントする
      • Trace ログを生成する
      • Trace ログを引っこ抜く
    09/19/11 Traceview: A Graphical Log Viewer http://developer.android.com/guide/developing/tools/traceview.html
  • 2. Traceview を使うには 09/19/11
  • 1. SD カードをマウントする
    • Trace ログは SD カードに保存されるため、 SD カードが端末に差しこまれている ( マウントされている ) 必要がある。
    • ここではエミュレータに SD カードをマウントする場合について説明する。
    • SD カードのイメージを作る。
      • tools にある mksdcard コマンドを実行する
        • $> mksdcard 容量 生成ファイル名
    09/19/11
  • 1. SD カードをマウントする
    • AVD で SD カードイメージファイルを指定する。
      • Eclipse で「ウィンドウ」->「 Android SDK および AVD マネージャ」をクリック
      • エミュレータ一覧から自分が使うエミュレータを選択し、「編集」ボタンをクリック。または「新規」ボタンをクリックして、エミュレータを新しく作る
      • 右図の画面が出るので、「 SD Card 」の欄にある「参照」ボタンをクリックし、作ったイメージファイルを指定する。
      • 「 Edit AVD 」を押して画面を閉じる。
    09/19/11
  • 2. Trace ログを生成する
    • Java のソースコードに以下のメソッドを埋め込む。
      • Debug.startMethodTracing(string)   Trace ログ取得開始
        • 引数の文字列は出力される trace ログファイル名
        • パスを指定することも可能 ( デフォルトは /sdcard)
          • ちなみに、 /sdcard は /mnt/sdcard へのシンボリックリンク
      • Debug.stopMethodTracng()       Trace ログ取得終了
    • アプリの起動から終了までを採りたい場合、 start ~ () は Activity の onCreate() 内で、 stop ~ () は onDestroy() で呼ぶのが良い
    09/19/11
  • 2. Trace ログを生成する
    • Permission 設定
      • SD カードにファイルを作り、メッセージを書き込むために Permission を設定する必要がある。
        • でないと、 Permission Denied が発生してアプリが落ちる。
      • AndroidManifest.xml に以下を追記する。
    09/19/11
  • 2. Trace ログを生成する
    • アプリを実行すると、ファイル・エクスプローラの sdcard フォルダに trace ログファイルが生成される。
      • ファイルエクスプローラは Eclipse の DDMS パースペクティブからファイル・エクスプローラービューで見れる。
    09/19/11
  • 2. Trace ログを生成する
    • また、 startMethodTrace() 呼び出しと stopMethodTrace() の呼び出しが LogCat 上に表示される。
    09/19/11
  • 3. Trace ログを引っこ抜く
    • SD カードに保存された trace ログファイルを引っこ抜く。
      • adb pull で trace ファイルを指定する。
    09/19/11
  • 3. Traceview でログを解析する 09/19/11
  • 1. Traceview 実行
    • tools にある traceview を実行する。
      • trace ログファイルを「絶対パス」で指定する。
        • なぜ相対パス指定できないのか不明
    • 実行すると以下の画面が現れる。
      • 上部分:タイムラインパネル
      • 下部分:プロファイルパネル
    09/19/11
  • 2. タイムラインパネル
    • Traceview の上部分はタイムラインパネルと呼ばれ、各スレッド毎にコールされたメソッドがグラフ上に表示される。
    • メソッドは時系列で並んでおり、コールされる順序やメソッドの使用頻度、実行に要した時間を見ることが可能。
    • 以下の操作が ( マウスのみで ) 可能
      • クリック:そのメソッドがコールされている場所全てをアニメーションで表示?、プロファイルパネルの関連情報をソートする
      • ドラック:任意の大きさに拡大可能。戻すときはダブルクリック
    09/19/11
  • 3. プロファイルパネル
    • Traceview の舌部分はプロファイルパネルと呼ばれ、メソッドの実行時間に関するデータを見ることが可能
    • 各項目をクリックするとメソッド内の詳細な統計が表示され、タイムラインパネルのどこに該当するか知らせてくれる。
    09/19/11
  • 3. プロファイルパネル
    • 各項目は以下の通り
    09/19/11 項目名 意味 name メソッド名 Inclusive そのメソッドとそのメソッドから呼ばれたメソッドの実行時間の合計 Incl% 最大経過時間に対する Inclusive タイムの割合 Exclusive そのメソッドの実行時間 Excl% 最大経過時間に対する Exclusive タイムの割合 Calls + Recur Calls/Total このメソッドのコール回数 + 再帰的にコールされた回数 Time/Call 平均タイム
  • 4. 解析方法
    • Traceview ですべきことは実行時間を多く費やしている処理を発見し、最適化すべきメソッドを特定する事
      • Excl% を降順でソート->実際にメソッド実行に費やされた時間なので、他と比べて高い場合は最適化の対象
      • Excl% の値が高いメソッドを最適化してもパフォーマンスが改善されない場合->プログラム全体の作りが悪い。 Incl% を降順でソートし、他と比べて高い場合は最適化の対象。 Incl% は体感速度に直結する。
    09/19/11
  • 参考 URL
    • Android Developers
      • http://developer.android.com/intl/ja/index.html
    • Android エミュレーターの仮想 SD カードを使う
      • http://www.usefullcode.net/2010/12/androidsd.html
    • Android1.6 以降 プロファイラ traceview の落とし穴
      • http://blog.livedoor.jp/sylc/archives/1478471.html
    • Android TraceView 基本編
      • http://www.taosoftware.co.jp/blog/2009/11/android_traceview.html
    09/19/11