為了便於閱讀, 應邀將Android App效能優化系列, 轉移到掘金原創上來.
掘金的新出的"收藏集"功能可以用來做系列文集了.
第一篇 App效能測試和分析工具.
先上個圖:
本文暫不對工具的使用做過多的深入.
在後續的具體例項中會具體說明怎麼用這些工具來達成分析目的和解決問題的.
1, 官方工具
一般來說, 學習一門新的技術, 最應該做的就是閱讀其官方文件, 那是最權威的.
Android本身給我們提供了很多App效能測試和分析工具, 而且大部分都整合到Android Studio或DDMS中, 非常方便使用.
1.1 StrictMode
說明
顧名思義, "嚴格模式", 主要用來限制應用做一些不符合效能規範的事情. 一般用來檢測主執行緒中的耗 時操作和阻塞. 開啟StrictMode後, 如果執行緒中做一些諸如讀寫檔案, 網路訪問等操作, 將會在Log console輸出一些警告, 警告資訊包含Stack Trace來顯示哪個地方出了問題.文件
作用
- 主要用來做主執行緒優化分析
1.2 Systrace
說明
Systrace是一個收集和檢測時間資訊的工具, 它能顯示CPU和時間被消耗在哪兒了, 每個程式和執行緒都在其CPU時間片內做了什麼事兒. 而且會指示哪個地方出了問題, 以及給出Fix建議.
其以trace檔案(html)的方式記錄. 可以直接用Chrome瀏覽器開啟檢視. 介面如下:
文件
作用
- 作用很多, 個人主要用來分析UI的繪製時間, 結合Hierarchy Viewer來提升UI效能.
- 也可以用來發現耗時操作.
1.3 Hierarchy Viewer
說明
Hierarchy Viewer提供了一個視覺化的介面來觀測佈局的層級, 讓我們可以優化佈局層級, 刪除多餘的不必要的View層級, 提升佈局速度.
有必要說明下的是:
上圖紅框標出的三個點是關鍵分析資料. 左起依次代表View的Measure, Layout和Draw的效能. 另外顏色表示該View的該項時間指數, 分為:- 綠色, 表示該View的此項效能比該View Tree中超過50%的View都要快.
- 黃色, 表示該View的此項效能比該View Tree中超過50%的View都要慢.
- 紅色, 表示該View的此項效能是View Tree中最慢的.
文件
作用
- 用來做View層級分析, 可以分析出View Tree中的效能阻塞點, 以便對症下藥, 提升佈局效能.
Hierarchy Viewer需要Root的機器(產品機沒有開啟ViewServer)才可以執行.
可以使用第三方的開源的ViewServer來協助我們在未Root的機器上使用Hierarchy Viewer分析.
1.4 TraceView
說明
一個圖形化的工具, 用來展示和分析方法的執行時間.
文件
作用
- 分析方法呼叫棧以及其執行時間, 優化方法執行.
1.5 Memory Monitor
說明
記憶體使用檢測器, 可以實時檢測當前Application的記憶體使用和釋放等資訊, 並以圖形化介面展示.
文件
作用
- 用來做記憶體分析, 記憶體洩露排查的不二之選. 可以結合heap viewer, allocation tracker來分析.
- 可以匯出hprof檔案結合第三方的MAT工具分析洩露點.
1.6 Other Monitor
說明
Android Studio的Monitor還提供了其他三個Motinor --- CPU, GPU, Network.文件
作用
- 分別用來跟蹤監測CPU,GPU和Network的使用極其變化, 可以作為網路優化, 流量優化和渲染優化等的一個指導. (個人並不常用到~)
1.7 其他
Android的開發者模式中也提供了較多的用來監測效能的選項, 可以用下:
2, 第三方工具
以下工具全部開源, 開源萬歲...
2.1 Google的Battery Historian
說明
Google出品, 通過Android系統的bugreport檔案來做電量使用分析的工具.文件
作用
- 用來做電量使用分析.
2.2 網易的
說明
針對Android App的CPU, 記憶體, 網路, 電量等多項綜合的測試分析.文件
作用
- 比官方工具更適合國人使用來做App的整體效能分析.
2.3 Square
說明
Square出品, 必屬精品.
類似與App探針的記憶體洩露監測工具.文件
作用
- 整合到App中, 用來做記憶體問題預防最好不過了.
2.4 AndroidDevMetrics
說明
一個library, 用來檢測Activity生命週期執行效能, Dagger2注入效能以及幀率效能的工具.文件
作用
- 如果你的應用使用的Dagger2, 這個就比較必要了.
3, 結語
MAT沒有側重的提, 是因為這個工具在ADT時代比較常用, AS2.0之後, 本身的Memory Monitor越來越強大, 結合日益完善的第三方工具基本上可以完成記憶體方面的優化了.
歡迎大家分享自己常用的App效能分析工具, 共同學習~