系列文:
- 背景:Android App優(yōu)化, 要怎么做?
- Android App優(yōu)化之性能分析工具
- Android App優(yōu)化之提升你的App啟動速度之理論基礎(chǔ)
- Android App優(yōu)化之提升你的App啟動速度之實例挑戰(zhàn)
- Android App優(yōu)化之Layout怎么擺
- Android App優(yōu)化之ANR詳解
- Android App優(yōu)化之消除卡頓
- Android App優(yōu)化之內(nèi)存優(yōu)化
- Android App優(yōu)化之持久電量
- Android App優(yōu)化之如何高效網(wǎng)絡(luò)請求
今天聊下個人比較慣用的一些App性能測試和分析工具, 先上個圖:
![性能分析工具]

本文暫不對工具的使用做過多的深入.
在后續(xù)的具體實例中會具體說明怎么用這些工具來達(dá)成分析目的和解決問題的.
1, 官方工具
一般來說, 學(xué)習(xí)一門新的技術(shù), 最應(yīng)該做的就是閱讀其官方文檔, 那是最權(quán)威的.
Android本身給我們提供了很多App性能測試和分析工具, 而且大部分都集成到Android Studio或DDMS中, 非常方便使用.
1.1 StrictMode
說明
顧名思義, "嚴(yán)格模式", 主要用來限制應(yīng)用做一些不符合性能規(guī)范的事情. 一般用來檢測主線程中的耗 時操作和阻塞. 開啟StrictMode后, 如果線程中做一些諸如讀寫文件, 網(wǎng)絡(luò)訪問等操作, 將會在Log console輸出一些警告, 警告信息包含Stack Trace來顯示哪個地方出了問題.-
文檔
-
作用
- 主要用來做主線程優(yōu)化分析
1.2 Systrace
- 說明
Systrace是一個收集和檢測時間信息的工具, 它能顯示CPU和時間被消耗在哪兒了, 每個進(jìn)程和線程都在其CPU時間片內(nèi)做了什么事兒. 而且會指示哪個地方出了問題, 以及給出Fix建議.
其以trace文件(html)的方式記錄. 可以直接用Chrome瀏覽器打開查看. 界面如下:

-
文檔
-
作用
- 作用很多, 個人主要用來分析UI的繪制時間, 結(jié)合Hierarchy Viewer來提升UI性能.
- 也可以用來發(fā)現(xiàn)耗時操作.
1.3 Hierarchy Viewer
- 說明
Hierarchy Viewer提供了一個可視化的界面來觀測布局的層級, 讓我們可以優(yōu)化布局層級, 刪除多余的不必要的View層級, 提升布局速度.

有必要說明下的是:
上圖紅框標(biāo)出的三個點是關(guān)鍵分析數(shù)據(jù). 左起依次代表View的Measure, Layout和Draw的性能. 另外顏色表示該View的該項時間指數(shù), 分為:
* 綠色, 表示該View的此項性能比該View Tree中超過50%的View都要快.
* 黃色, 表示該View的此項性能比該View Tree中超過50%的View都要慢.
* 紅色, 表示該View的此項性能是View Tree中最慢的.
-
文檔
-
作用
- 用來做View層級分析, 可以分析出View Tree中的性能阻塞點, 以便對癥下藥, 提升布局性能.
Hierarchy Viewer需要Root的機(jī)器(產(chǎn)品機(jī)沒有開啟ViewServer)才可以執(zhí)行.
可以使用第三方的開源的ViewServer來協(xié)助我們在未Root的機(jī)器上使用Hierarchy Viewer分析.
1.4 TraceView
- 說明
一個圖形化的工具, 用來展示和分析方法的執(zhí)行時間.

-
文檔
-
作用
- 分析方法調(diào)用棧以及其執(zhí)行時間, 優(yōu)化方法執(zhí)行.
1.5 Memory Monitor
- 說明
內(nèi)存使用檢測器, 可以實時檢測當(dāng)前Application的內(nèi)存使用和釋放等信息, 并以圖形化界面展示.

-
文檔
-
作用
- 用來做內(nèi)存分析, 內(nèi)存泄露排查的不二之選. 可以結(jié)合heap viewer, allocation tracker來分析.
- 可以導(dǎo)出hprof文件結(jié)合第三方的MAT工具分析泄露點.
1.6 Other Monitor
說明
Android Studio的Monitor還提供了其他三個Motinor --- CPU, GPU, Network.-
文檔
-
作用
- 分別用來跟蹤監(jiān)測CPU,GPU和Network的使用極其變化, 可以作為網(wǎng)絡(luò)優(yōu)化, 流量優(yōu)化和渲染優(yōu)化等的一個指導(dǎo). (個人并不常用到~)
1.7 其他
Android的開發(fā)者模式中也提供了較多的用來監(jiān)測性能的選項, 可以用下:

2, 第三方工具
以下工具全部開源, 開源萬歲...
2.1 Google的Battery Historian
說明
Google出品, 通過Android系統(tǒng)的bugreport文件來做電量使用分析的工具.-
文檔
-
作用
- 用來做電量使用分析.
2.2 網(wǎng)易的
說明
針對Android App的CPU, 內(nèi)存, 網(wǎng)絡(luò), 電量等多項綜合的測試分析.-
文檔
-
作用
- 比官方工具更適合國人使用來做App的整體性能分析.
2.3 Square
說明
Square出品, 必屬精品.
類似與App探針的內(nèi)存泄露監(jiān)測工具.-
文檔
-
作用
- 集成到App中, 用來做內(nèi)存問題預(yù)防最好不過了.
2.4 AndroidDevMetrics
說明
一個library, 用來檢測Activity生命周期執(zhí)行性能, Dagger2注入性能以及幀率性能的工具.-
文檔
-
作用
- 如果你的應(yīng)用使用的Dagger2, 這個就比較必要了.
3, 結(jié)語
MAT沒有側(cè)重的提, 是因為這個工具在ADT時代比較常用, AS2.0之后, 本身的Memory Monitor越來越強(qiáng)大, 結(jié)合日益完善的第三方工具基本上可以完成內(nèi)存方面的優(yōu)化了.
歡迎大家分享自己常用的App性能分析工具, 共同學(xué)習(xí)~
_