Android 分析工具介紹
前面的小節(jié)我們學習了 Android 模擬器工具。本小節(jié)我們學習 Android 分析工具。
1. 概述
Android 分析工具位于以下位置:android_sdk/platform-tools/
主要的命令行工具有如下這些:
-
dumpsys
一種在 Android 設備上運行的工具,可提供有關(guān)系統(tǒng)服務的信息。 -
dmtracedump
一種用于從跟蹤日志文件生成圖形化的調(diào)用堆棧圖的工具。 -
systrace
借助該工具收集和檢查設備上在系統(tǒng)一級運行的所有進程的時間信息。
2. dumpsys
dumpsys 是一種在 Android 設備上運行的工具,可提供有關(guān)系統(tǒng)服務的信息。我們可以使用 Android 調(diào)試橋 (ADB) 從命令行調(diào)用 dumpsys,獲取在連接的設備上運行的所有系統(tǒng)服務的診斷輸出。此輸出通常比我們想要的更詳細,因此我們可以使用下文所述的命令行選項僅獲取我們感興趣的系統(tǒng)服務的輸出。
2.1 語法
adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]
要獲取所連接設備的所有系統(tǒng)服務的診斷輸出,只需運行 adb shell dumpsys。不過,這樣輸出的信息比我們通常想要的信息多得多。要使輸出更加可控,我們可以通過在命令中添加相應服務來指定要檢查的服務。例如,下面的命令會提供輸入組件(如觸摸屏或內(nèi)置鍵盤)的系統(tǒng)數(shù)據(jù):
adb shell dumpsys input
如需查看可與 dumpsys 配合使用的系統(tǒng)服務的完整列表,請使用以下命令:
adb shell dumpsys -l
2.2 命令選項
命令選項 | 說明 |
---|---|
-t | 指定超時期限(秒)。 |
–help | 輸出 dumpsys 工具的幫助文本。 |
-l | 輸出可與 dumpsys 配合使用的系統(tǒng)服務的完整列表。 |
–skip | 指定不希望包含在輸出中的服務。 |
service | 指定希望輸出的服務。 |
-c | 指定某些服務時,附加此選項能以計算機可讀的格式輸出數(shù)據(jù)。 |
-h | 對于某些服務,附加此選項可查看該服務的幫助文本和其他選項。 |
3. dmtracedump
dmtracedump 是一種用于從跟蹤日志文件生成圖形化的調(diào)用堆棧圖的工具。此工具使用 Graphviz Dot 實用程序創(chuàng)建圖形化的輸出,因此我們必須先安裝 Graphviz,才能運行 dmtracedump。如果尚未生成跟蹤日志并將其從連接的設備保存到本地計算機,請參閱通過檢測我們的應用生成跟蹤日志。dmtracedump 工具以樹形圖的形式生成調(diào)用堆棧數(shù)據(jù),其中每個節(jié)點表示一個方法調(diào)用。
3.1 語法
dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] trace-base-name
3.2 全局選項
命令選項 | 說明 |
---|---|
-h | 開啟 HTML 輸出 |
-o | 轉(zhuǎn)儲跟蹤文件,而不是進行剖析 |
3.3 命令選項
命令選項 | 說明 |
---|---|
-d | 以此跟蹤名稱作為參數(shù)運行 diff。 |
-g | 生成 outfile 輸出。 |
-s | 可排序 JavaScript 文件所在位置的基址。 |
-t | 在圖表中包含子節(jié)點的最低閾值。 |
4. systrace
systrace 命令會調(diào)用 Systrace 工具,我們可以借助該工具收集和檢查設備上在系統(tǒng)一級運行的所有進程的時間信息。
4.1 語法
python systrace.py [options] [categories]
例如,以下命令會調(diào)用 systrace 來記錄設備活動,并生成一個名為 mynewtrace.html 的 HTML 報告。此類別列表是大多數(shù)設備的合理默認列表。
python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
binder_driver hal dalvik camera input res
如需查看已連接設備支持的類別列表,請運行以下命令:
python systrace.py --list-categories
4.2 全局選項
命令選項 | 說明 |
---|---|
–help | 顯示幫助消息。 |
–list-categories | 列出已連接設備可用的跟蹤類別。 |
4.3 命令選項
命令選項 | 說明 |
---|---|
-o | 將 HTML 跟蹤報告寫入指定的文件。 |
–time | 設置跟蹤設備活動時間。 |
–buf-size | 設置跟蹤緩沖區(qū)大小。 |
–ktrace | 跟蹤逗號分隔列表中指定的特定內(nèi)核函數(shù)的活動。 |
–app | 啟用對應用的跟蹤,指定為包含進程名稱的逗號分隔列表。 |
–from-file | 根據(jù)文件創(chuàng)建交互式 HTML 報告,而不是運行實時跟蹤。 |
–serial | 在已連接的特定設備上進行跟蹤。 |
categories | 包含指定的系統(tǒng)進程的跟蹤信息,如 gfx 表示用于渲染圖形的系統(tǒng)進程。 |
5. 小結(jié)
本節(jié)課程我們主要學習了 Android 分析工具。本節(jié)課程的重點如下:
- 掌握如何使用 Android 分析工具。