系列文:
- 背景:Android App優(yōu)化, 要怎么做?
- Android App優(yōu)化之性能分析工具
- Android App優(yōu)化之提升你的App啟動(dòng)速度之理論基礎(chǔ)
- Android App優(yōu)化之提升你的App啟動(dòng)速度之實(shí)例挑戰(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ò)請(qǐng)求
今天聊下個(gè)人比較慣用的一些App性能測(cè)試和分析工具, 先上個(gè)圖:
![性能分析工具]
本文暫不對(duì)工具的使用做過(guò)多的深入.
在后續(xù)的具體實(shí)例中會(huì)具體說(shuō)明怎么用這些工具來(lái)達(dá)成分析目的和解決問(wèn)題的.
1, 官方工具
一般來(lái)說(shuō), 學(xué)習(xí)一門(mén)新的技術(shù), 最應(yīng)該做的就是閱讀其官方文檔, 那是最權(quán)威的.
Android本身給我們提供了很多App性能測(cè)試和分析工具, 而且大部分都集成到Android Studio或DDMS中, 非常方便使用.
1.1 StrictMode
說(shuō)明
顧名思義, "嚴(yán)格模式", 主要用來(lái)限制應(yīng)用做一些不符合性能規(guī)范的事情. 一般用來(lái)檢測(cè)主線(xiàn)程中的耗 時(shí)操作和阻塞. 開(kāi)啟StrictMode后, 如果線(xiàn)程中做一些諸如讀寫(xiě)文件, 網(wǎng)絡(luò)訪(fǎng)問(wèn)等操作, 將會(huì)在Log console輸出一些警告, 警告信息包含Stack Trace來(lái)顯示哪個(gè)地方出了問(wèn)題.-
文檔
-
作用
- 主要用來(lái)做主線(xiàn)程優(yōu)化分析
1.2 Systrace
- 說(shuō)明
Systrace是一個(gè)收集和檢測(cè)時(shí)間信息的工具, 它能顯示CPU和時(shí)間被消耗在哪兒了, 每個(gè)進(jìn)程和線(xiàn)程都在其CPU時(shí)間片內(nèi)做了什么事兒. 而且會(huì)指示哪個(gè)地方出了問(wèn)題, 以及給出Fix建議.
其以trace文件(html)的方式記錄. 可以直接用Chrome瀏覽器打開(kāi)查看. 界面如下:
-
文檔
-
作用
- 作用很多, 個(gè)人主要用來(lái)分析UI的繪制時(shí)間, 結(jié)合Hierarchy Viewer來(lái)提升UI性能.
- 也可以用來(lái)發(fā)現(xiàn)耗時(shí)操作.
1.3 Hierarchy Viewer
- 說(shuō)明
Hierarchy Viewer提供了一個(gè)可視化的界面來(lái)觀(guān)測(cè)布局的層級(jí), 讓我們可以?xún)?yōu)化布局層級(jí), 刪除多余的不必要的View層級(jí), 提升布局速度.
有必要說(shuō)明下的是:
上圖紅框標(biāo)出的三個(gè)點(diǎn)是關(guān)鍵分析數(shù)據(jù). 左起依次代表View的Measure, Layout和Draw的性能. 另外顏色表示該View的該項(xiàng)時(shí)間指數(shù), 分為:
* 綠色, 表示該View的此項(xiàng)性能比該View Tree中超過(guò)50%的View都要快.
* 黃色, 表示該View的此項(xiàng)性能比該View Tree中超過(guò)50%的View都要慢.
* 紅色, 表示該View的此項(xiàng)性能是View Tree中最慢的.
-
文檔
-
作用
- 用來(lái)做View層級(jí)分析, 可以分析出View Tree中的性能阻塞點(diǎn), 以便對(duì)癥下藥, 提升布局性能.
Hierarchy Viewer需要Root的機(jī)器(產(chǎn)品機(jī)沒(méi)有開(kāi)啟ViewServer)才可以執(zhí)行.
可以使用第三方的開(kāi)源的ViewServer來(lái)協(xié)助我們?cè)谖碦oot的機(jī)器上使用Hierarchy Viewer分析.
1.4 TraceView
- 說(shuō)明
一個(gè)圖形化的工具, 用來(lái)展示和分析方法的執(zhí)行時(shí)間.
-
文檔
-
作用
- 分析方法調(diào)用棧以及其執(zhí)行時(shí)間, 優(yōu)化方法執(zhí)行.
1.5 Memory Monitor
- 說(shuō)明
內(nèi)存使用檢測(cè)器, 可以實(shí)時(shí)檢測(cè)當(dāng)前Application的內(nèi)存使用和釋放等信息, 并以圖形化界面展示.
-
文檔
-
作用
- 用來(lái)做內(nèi)存分析, 內(nèi)存泄露排查的不二之選. 可以結(jié)合heap viewer, allocation tracker來(lái)分析.
- 可以導(dǎo)出hprof文件結(jié)合第三方的MAT工具分析泄露點(diǎn).
1.6 Other Monitor
說(shuō)明
Android Studio的Monitor還提供了其他三個(gè)Motinor --- CPU, GPU, Network.-
文檔
-
作用
- 分別用來(lái)跟蹤監(jiān)測(cè)CPU,GPU和Network的使用極其變化, 可以作為網(wǎng)絡(luò)優(yōu)化, 流量?jī)?yōu)化和渲染優(yōu)化等的一個(gè)指導(dǎo). (個(gè)人并不常用到~)
1.7 其他
Android的開(kāi)發(fā)者模式中也提供了較多的用來(lái)監(jiān)測(cè)性能的選項(xiàng), 可以用下:
2, 第三方工具
以下工具全部開(kāi)源, 開(kāi)源萬(wàn)歲...
2.1 Google的Battery Historian
說(shuō)明
Google出品, 通過(guò)Android系統(tǒng)的bugreport文件來(lái)做電量使用分析的工具.-
文檔
-
作用
- 用來(lái)做電量使用分析.
2.2 網(wǎng)易的
說(shuō)明
針對(duì)Android App的CPU, 內(nèi)存, 網(wǎng)絡(luò), 電量等多項(xiàng)綜合的測(cè)試分析.-
文檔
-
作用
- 比官方工具更適合國(guó)人使用來(lái)做App的整體性能分析.
2.3 Square
說(shuō)明
Square出品, 必屬精品.
類(lèi)似與App探針的內(nèi)存泄露監(jiān)測(cè)工具.-
文檔
-
作用
- 集成到App中, 用來(lái)做內(nèi)存問(wèn)題預(yù)防最好不過(guò)了.
2.4 AndroidDevMetrics
說(shuō)明
一個(gè)library, 用來(lái)檢測(cè)Activity生命周期執(zhí)行性能, Dagger2注入性能以及幀率性能的工具.-
文檔
-
作用
- 如果你的應(yīng)用使用的Dagger2, 這個(gè)就比較必要了.
3, 結(jié)語(yǔ)
MAT沒(méi)有側(cè)重的提, 是因?yàn)檫@個(gè)工具在ADT時(shí)代比較常用, AS2.0之后, 本身的Memory Monitor越來(lái)越強(qiáng)大, 結(jié)合日益完善的第三方工具基本上可以完成內(nèi)存方面的優(yōu)化了.
歡迎大家分享自己常用的App性能分析工具, 共同學(xué)習(xí)~
_