Android App 優化之性能分析工具

爲了便於閱讀, 應邀將Android App性能優化系列, 轉移到掘金原創上來.
掘金的新出的"收藏集"功能能夠用來作系列文集了.html

第一篇 App性能測試和分析工具.android

先上個圖:git

性能分析工具

本文暫不對工具的使用作過多的深刻.
在後續的具體實例中會具體說明怎麼用這些工具來達成分析目的和解決問題的.github

1, 官方工具

通常來講, 學習一門新的技術, 最應該作的就是閱讀其官方文檔, 那是最權威的.
Android自己給咱們提供了不少App性能測試和分析工具, 並且大部分都集成到Android Studio或DDMS中, 很是方便使用.瀏覽器

1.1 StrictMode

  • 說明
    顧名思義, "嚴格模式", 主要用來限制應用作一些不符合性能規範的事情. 通常用來檢測主線程中的耗 時操做和阻塞. 開啓StrictMode後, 若是線程中作一些諸如讀寫文件, 網絡訪問等操做, 將會在Log console輸出一些警告, 警告信息包含Stack Trace來顯示哪一個地方出了問題.性能優化

  • 文檔網絡

  • 做用eclipse

    • 主要用來作主線程優化分析

1.2 Systrace

  • 說明
    Systrace是一個收集和檢測時間信息的工具, 它能顯示CPU和時間被消耗在哪兒了, 每一個進程和線程都在其CPU時間片內作了什麼事兒. 並且會指示哪一個地方出了問題, 以及給出Fix建議.
    其以trace文件(html)的方式記錄. 能夠直接用Chrome瀏覽器打開查看. 界面以下:
    工具

    14716169060393

  • 文檔佈局

  • 做用

    • 做用不少, 我的主要用來分析UI的繪製時間, 結合Hierarchy Viewer來提高UI性能.
    • 也能夠用來發現耗時操做.

1.3 Hierarchy Viewer

  • 說明
    Hierarchy Viewer提供了一個可視化的界面來觀測佈局的層級, 讓咱們能夠優化佈局層級, 刪除多餘的沒必要要的View層級, 提高佈局速度.

    14716178266122

    有必要說明下的是:
    上圖紅框標出的三個點是關鍵分析數據. 左起依次表明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

1.6 Other Monitor

1.7 其餘

Android的開發者模式中也提供了較多的用來監測性能的選項, 能夠用下:

14716202213835

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性能分析工具, 共同窗習~

相關文章
相關標籤/搜索