點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊
Matrix 是一款微信研發並日常使用的 APM (Application Performance Manage) ,當前主要運行在 Android 平臺上。Matrix 的目標是建立統一的應用性能接入框架,通過對各種性能監控方案快速集成,對性能監控項的異常數據進行採集和分析,輸出相應問題的分析、定位與優化建議,從而幫助開發者開發出更高質量的應用。
Matrix 當前監控範圍包括:應用安裝包大小,SQLite 操作優化,幀率變化,卡頓,啟動耗時,頁面切換耗時,慢方法,文件讀寫性能,I/O 句柄洩漏, 內存洩漏等。
APK Checker
APK Checker 是針對 Android 安裝包的分析檢測工具,根據一系列設定好的規則檢測 APK 是否存在特定的問題,並輸出較為詳細的檢測結果報告,用於分析排查問題以及版本追蹤。當前,APK Checker 主要包含以下功能:
- 讀取 manifest 的信息
- 按文件大小排序列出 APK 中的所有文件
- 統計方法數
- 統計 class 數目
- 檢查是否經過資源混淆(AndResguard)
- 搜索不含 alpha 通道的 png 文件
- 搜索未經壓縮的文件類型
- 檢查是否包含多 ABI 版本的動態庫
- 統計 APK 中包含的 R 類以及 R 類中的 field count
- 搜索冗餘的文件
- 檢查是否有多個動態庫靜態鏈接了 STL
- 搜索 APK 中包含的無用資源
- 搜索 APK 中包含的無用 assets 文件
- 搜索 APK 中未經裁剪的動態庫
SQLite Lint
SQLite Lint是一個 SQLite 使用質量的自動化檢測工具,猶如一個 SQLite 優化高手在開發或者測試過程中不厭其煩地、仔細地 review 你的 SQL 語句,是團隊高質量 SQLite 實踐中的一個有用工具。SQLite Lint 當前支持的檢測能力包括:
- 檢測索引使用問題
- 檢測冗餘索引問題
- 檢測 select * 問題
- 檢測 Autoincrement 問題
- 檢測建議使用 prepared statement
- 檢測建議使用 without rowid 特性
Trace Canary
Trace Canary 通過 choreographer 回調、編譯期插樁的方式,實現了高準確率、高性能的卡頓檢測、定位方案,並擴展支持了多個其它流暢性指標,包括:
- 界面流暢性評估
- 卡頓定位
- ANR監控
- 應用啟動及界面切換耗時監控
Resource Canary
Resource Canary 是基於 Weak Reference 的特性和 Haha 庫開發的 Activity 洩漏和 Bitmap 重複創建檢測工具。其中檢測採集部分部署在客戶端,分析部分部署在服務端,通過分離檢測和分析兩部分邏輯使該工具的流程對持續集成更友好。當前 Resource Canary 主要包含以下功能:
- 檢測疑似洩漏的 Activity ,輸出其類名和引用鏈
- 檢測內存中圖像數據完全一樣的重複 Bitmap 對象,輸出其類名和引用鏈
IO Canary
IO Canary 是一個在開發、測試或者灰度階段輔助發現 IO 問題的工具,目前主要包括文件 IO 監控和 Closeable Leak 監控兩部分,提供了 IO 的大盤監控,從而做到心中有數。具體功能包括:
- 檢測主線程 IO 使用不當
- 檢測讀寫 Buffer 過小
- 檢測重複讀操作
- 檢測 Closeable Leak 操作,包括文件讀寫、cursor 未及時關閉等
Matrix 有哪些優勢?
與常規的 APM 工具相比,Matrix 擁有以下特點:
APK Checker
- 具有更好的可用性:JAR 包方式提供,更方便應用到持續集成系統中,從而追蹤和對比每個 APK 版本之間的變化
- 更多的檢查分析功能:除具備 APKAnalyzer 的功能外,還支持統計 APK 中包含的 R 類、檢查是否有多個動態庫靜態鏈接了 STL 、搜索 APK 中包含的無用資源,以及支持自定義檢查規則等
- 輸出的檢查結果更加詳實:支持可視化的 HTML ,便於分析處理的 JSON ,自定義輸出等等
SQLite Lint
- 接入簡單,代碼無侵入
- 數據量無關,開發、測試階段即可發現SQLite性能隱患
- 檢測算法基於最佳實踐,高標準把控SQLite質量
- 底層是 C++ 實現,支持多平臺擴展
Resource Canary
- 分離了檢測和分析部分,便於在不打斷自動化測試的前提下持續輸出分析後的檢測結果
- 對檢測部分生成的 Hprof 文件進行了裁剪,移除了大部分無用數據,降低了傳輸 Hprof 文件的開銷
- 增加了重複 Bitmap 對象檢測,方便通過減少冗餘 Bitmap 數量,降低內存消耗
Trace Canary
- 編譯期動態修改字節碼, 高性能記錄執行耗時與調用堆棧
- 準確的定位到發生卡頓的函數,提供執行堆棧、執行耗時、執行次數等信息,幫助快速解決卡頓問題
- 自動涵蓋卡頓、啟動耗時、頁面切換、慢函數檢測等多個流暢性指標
IO Canary
- 接入簡單,代碼無侵入
- 性能、洩漏全面監控,對 IO 質量心中有數
- 兼容到 Android P
未來規劃
- 內外同源,持續完善功能,增加新的監控項,如電量,線程資源,內存監控等等
- 平臺擴展,提供 iOS 等多語言 SDK
- 打造一套完整的雲解決方案
↓↓↓
閱讀更多 開源社區OSC 的文章