android view分析工具,Android 性能分析工具之TraceView
Traceview本身是一個數(shù)據(jù)分析工具, Android 平臺將Traceview作為 Android SDK內(nèi)置的一個工具,主要用于加載 Android 應用程序所生成的trace文件并且分析trace文件采集到的數(shù)據(jù)里面每個方法(函數(shù))在不同線程里調(diào)用次數(shù)、消耗的時間等等。
Trace文件里數(shù)據(jù)的采集則需要使用 Android SDK 中的 Debug 類或者利用 DDMS 工具
Traceview在Android SDK的tools目錄里,如下圖:
配置環(huán)境
步驟一:在系統(tǒng)變量里新建ANDROID_HOME
步驟二:在系統(tǒng)變量的Path里添加 %ANDROID_HOME%\tools
使用代碼生成 trace 文件
在需要分析代碼的開始位置添加以下代碼
//文件默認保存到 sdcard 根目錄下,"/sdcard/testTraceView.trace"
Debug.startMethodTracing("testTraceView");
復制代碼
其中testTraceView參數(shù)是自定義,其實就是生成的TraceView文件的文件名,例如testTraceView.trace
在需要分析的結(jié)束位置添加以下代碼
Debug.stopMethodTracing();
復制代碼
需要添加的權(quán)限
復制代碼
報錯示例
沒有獲取到權(quán)限
E/art: Unable to open trace file '/sdcard/testTrace.trace': Permission denied
復制代碼
2.打開testTrace.trace文件時報錯 ,因為沒有執(zhí)行Debug.stopMethodTracing();
Failed to read the trace filejava.io.IOException: Key section does not have an *end marker
at com.android.traceview.DmTraceReader.parseKeys(DmTraceReader.java:420)
at com.android.traceview.DmTraceReader.generateTrees(DmTraceReader.java:91)
at com.android.traceview.DmTraceReader.(DmTraceReader.java:87)
at com.android.traceview.MainWindow.main(MainWindow.java:286)
復制代碼
打開testTrace.trace文件時報錯的重要提示:Key section does not have an *end marker at com.android.traceview,說明沒有添加或者執(zhí)行Debug.stopMethodTracing();
查看是否生成trace文件
進入到shell模式執(zhí)行下面的指令語句在doc命令窗口或者AndroidStudio里Terminal窗口里執(zhí)行adb shell,下圖本人寫的demo在AndroidStudio里Terminal窗口查看的截圖:
注意:如果Debug.startMethodTracing("testTraceView");startMethodTracing里的參數(shù)只填寫testTraceView,則上面的截圖步驟只需要執(zhí)行1、2兩步就可看到testTraceView.trace文件 需要知道本人為什么執(zhí)行3、4兩步,請看本人demo里的startMethodTracing里的參數(shù)
導出trace文件
進入到shell模式執(zhí)行下面的指令語句adb pull /sdcard/testTraceView.trace E:\folder命令將testTraceView.trace導出到指定到E盤folder目錄。
本人demo里需要執(zhí)行的命令是: adb pull /sdcard/TraceView/MainActivity_2018-12-07_20_29_02.trace E:\folder
打開trace文件
進入到shell模式執(zhí)行下面的指令語句traceview E:\folder\testTraceView.trace
TraceView界面介紹
Traceview 界面分上下兩部分
上面是時間軸面板 (Timeline Panel)
左側(cè)顯示的是線程信息
右側(cè)不同顏色代表不同方法(函數(shù)),同一個顏色越長代表該方法執(zhí)行的時間越久
右側(cè)鼠標放在上面會出現(xiàn)時間線縱軸,在頂部會顯示當前時間線所執(zhí)行的具體函數(shù)信息
空白表示這個時間段內(nèi)沒有執(zhí)行內(nèi)容
下面是分析面板
各列作用說明
列名
描述
Name
該線程運行過程中所調(diào)用的函數(shù)名
Incl Cpu Time
某函數(shù)占用的CPU時間,包含內(nèi)部調(diào)用其它函數(shù)的CPU時間
Excl Cpu Time
某函數(shù)占用的CPU時間,但不含內(nèi)部調(diào)用其它函數(shù)所占用的CPU時間
Incl Real Time
某函數(shù)運行的真實時間(以毫秒為單位),內(nèi)含調(diào)用其它函數(shù)所占用的真實時間
Excl Real Time
某函數(shù)運行的真實時間(以毫秒為單位),不含調(diào)用其它函數(shù)所占用的真實時
Call+Recur Calls/Total
某函數(shù)被調(diào)用次數(shù)以及遞歸調(diào)用占總調(diào)用次數(shù)的百分比
Cpu Time/Call
某函數(shù)調(diào)用CPU時間與調(diào)用次數(shù)的比。相當于該函數(shù)平均執(zhí)行時間
Real Time
同CPU Time/Call類似,只不過統(tǒng)計單位換成了真實時間
注意:每一個Time列還對應有一個用時間百分比來統(tǒng)計的列(如Incl Cpu Time列對應還有一個列名為Incl Cpu Time %的列,表示以時間百分比來統(tǒng)計的Incl Cpu Time)
總結(jié)
以上是生活随笔為你收集整理的android view分析工具,Android 性能分析工具之TraceView的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ctfmon是什么启动项_Windows
- 下一篇: ctfmon是什么启动项_启动项里找不到