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