資料介紹
軟件簡介
MTHawkeye 是 iOS 下的調(diào)試優(yōu)化輔助工具集,旨在幫助 iOS 開發(fā)者提升開發(fā)效率、輔助優(yōu)化性能體驗。
在產(chǎn)品開發(fā)周期內(nèi),引入 MTHawkeye 來幫助你更快地發(fā)現(xiàn)、查找、分析、定位、解決問題:
- 開發(fā)階段,側(cè)重于開發(fā)調(diào)試輔助,及時偵測問題,并在必要時提示開發(fā)者及時處理
- 測試階段,側(cè)重于根據(jù)測試場景,收集盡可能多的數(shù)據(jù),用于自動化測試分析報告
- 線上階段,側(cè)重補(bǔ)充傳統(tǒng) APM 組件缺失,但自身業(yè)務(wù)需要收集的一些性能數(shù)據(jù)
MTHawkeye 內(nèi)置了一些常用的性能偵測相關(guān)插件,也引入并改進(jìn)了 FLEX 作為調(diào)試輔助的一個插件,應(yīng)用接入 MTHawkeye 時可自定義增改自己需要的插件。
以下為一些內(nèi)置插件的 demo 演示圖,分別用于查看主線程耗時方法
,查看 App 內(nèi)存分配詳情
,查看網(wǎng)絡(luò)請求詳情記錄
。更多插件及說明見后文。
????
0x00 功能簡介
MTHawkeye 簡單可分為上中下三層,除了最下面的基礎(chǔ)層
外,中間為UI 基礎(chǔ)層
,最上層的各個插件內(nèi)部根據(jù)不同場景做了職責(zé)拆分,應(yīng)用可根據(jù)自己的需要接入。整體結(jié)構(gòu)如下:
基礎(chǔ)功能
基礎(chǔ)層
主要提供了插件管理能力,存儲能力和一些基礎(chǔ)工具類。?UI基礎(chǔ)層
?則提供了開發(fā)、測試階段使用的界面交互框架,包含了懸浮窗、主界面框架和設(shè)置面板,插件可以集成到其中。
內(nèi)置的可選插件
內(nèi)置的插件根據(jù)關(guān)注點分成了?Memory
,?TimeConsuming
,?Energy
,?Network
,?Graphics
,?Storage
,?Utility
?幾個類別。
Memory
LivingObjectSniffer
?主要用于跟蹤觀察 ViewController 直接或間接持有的對象,以及自定義 View 對象,偵測他們是否異常存活,比如內(nèi)存泄露、未及時釋放或者不必要的內(nèi)存緩存。
在開發(fā)、測試階段,偵測到的異常情況可以以浮窗警告、Toast 的形式提示開發(fā)、測試人員。自動化測試時也可以直接提取記錄的存活對象做進(jìn)一步的分析判斷。
Allocations
?類同于 Instrument 的 Allocations 功能,跟蹤應(yīng)用實際分配的內(nèi)存詳情,在應(yīng)用內(nèi)存使用異常(異常上升、OOM 退出)時可以通過記錄的內(nèi)存使用詳情數(shù)據(jù),來排查內(nèi)存使用問題。
TimeConsuming
UITimeProfiler
?用于輔助主線程耗時任務(wù)的優(yōu)化。
數(shù)據(jù)采集部分主要包含 VC Life Trace 和 ObjC CallTrace 兩個組件。VC Life Trace 用于跟蹤 ViewController 打開各個階段的具體時間點,ObjC CallTrace在開啟后,則可跟蹤耗時大于指定閾值的 Objective-C 方法。
界面層部分將兩部分的數(shù)據(jù)合并展示,便于開發(fā)者更便捷的找出關(guān)注流程的耗時信息。示例圖如前文的動圖,更詳細(xì)的說明見插件說明文檔。
自動化測試、線上階段接入后,無需埋點或插入其他代碼,即可持續(xù)的跟蹤啟動耗時、頁面打開耗時和其他關(guān)鍵流程耗時。
#?ANRTrace
ANRTrace
?用于捕獲卡頓事件,同時采樣卡頓發(fā)生時的主線程調(diào)用棧。
#?FPSTrace
FPSTrace
?用于跟蹤界面 FPS 以及 OpenGL 刷新繪制 FPS,并在浮窗上顯示當(dāng)前值。
Energy
#?CPUTrace
CPUTrace
?用于跟蹤 CPU 持續(xù)高使用率,同時記錄高使用率期間主要調(diào)用了哪些方法。
BackgoundTask trace
插件將跟蹤UIBackgroundTaskIdentifier的開始/結(jié)束,在嘗試查找崩潰0xbada5e47的原因時將很有用。 (直接參見使用代碼)
Network
NetworkMonitor
?監(jiān)聽記錄 App 內(nèi) HTTP(S) 網(wǎng)絡(luò)請求的各個階段耗時,并提供內(nèi)置的記錄查看界面,便于開發(fā)者排查優(yōu)化網(wǎng)絡(luò)問題。
- 繼承 FLEX 的網(wǎng)絡(luò)請求記錄,過濾搜索裸機(jī)價。同時優(yōu)化了監(jiān)聽初始化邏輯,大幅減少對啟動時間的影響
- 針對 iOS 9 后的 NSURLSession 的請求,增加記錄 URLSessionTaskMetrics 方便查看請求各個階段的時間
- 基于 URLSessionTaskMetrics 增加類似 Chrome 網(wǎng)絡(luò)調(diào)試的 waterfall 視圖,方便查看網(wǎng)絡(luò)請求的隊列和并發(fā)情況
- 增加重復(fù)網(wǎng)絡(luò)請求的偵測
- 增強(qiáng)搜索欄,支持多條件搜索(域名篩選、重復(fù)請求、url 過濾、status 過濾)
- 記錄展示完整的網(wǎng)絡(luò)請求記錄(增加 request headers, request body, response body 記錄)
NetworkInspect
?插件基于 Network Monitor,根據(jù)記錄的網(wǎng)絡(luò)請求實際情況,偵測是否有可改進(jìn)優(yōu)化的項,上層可以自定義自己的規(guī)則。
Graphics
OpengGLTrace
?用于跟蹤 OpenGL 資源內(nèi)存占用情況,輔助發(fā)現(xiàn) OpenGL API 錯誤調(diào)用、異常參數(shù)傳遞。
Storage
DirectoryWatcher
?主要用于沙盒文件夾的大小跟蹤,便于開發(fā)測試過程中發(fā)現(xiàn)異常的文件管理問題。同時也集成了 FLEX 的沙盒文件查看。
Utility
#?FLEX
MTHawkeye 插件擴(kuò)展支持了沙盒文件的 AirDrop 功能。
桌面擴(kuò)展
如果需要將插件擴(kuò)展到桌面端,如在桌面上查看處理插件收集到的信息,可基于各插件提供的接口獲取數(shù)據(jù),然后橋接到第三方桌面端提供的協(xié)議。如
0x01 接入
開發(fā)階段接入
首先,以 pod 的形式,在項目 podfile 文件中加入 MTHawkeye 引用:
#< Only used during Debug #< Since the podfile dependency doesn't support environment configuration, #< the dependent pods also need to be explicitly configured as Debug. def hawkeye pod 'MTHawkeye', :configurations => 'Debug' pod 'FLEX', :configurations => ['Debug'] pod 'FBRetainCycleDetector', :configurations => ['Debug'] pod 'fishhook', :configurations => ['Debug'] pod 'CocoaLumberjack', '3.6.0', :configurations => ['Debug'] # CocoaLumberjack is optional, change to `MTHawkeye/DefaultPluginsWithoutLog` if don't need. # pod 'MTGLDebug', :configurations => ['Debug'] # MTGLDebug is exclude by default, change `MTHawkeye` to `MTHawkeye/DefaultPlugins` to include. pod 'MTAppenderFile', :configurations => ['Debug'] end target "YourProject" do hawkeye # ... end
注意:CocoaLumberjack
這個依賴庫需要使用<~3.6.0版本。 然后,在應(yīng)用啟動時開啟 MTHawkeye 服務(wù)??梢允褂媚J(rèn)集成的所有插件,或者選擇自己需要的插件啟動。
A: 快速集成默認(rèn)的所有插件:
#ifdef DEBUG #import <MTHawkeye/MTRunHawkeyeInOneLine.h> #endif - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #ifdef DEBUG [MTRunHawkeyeInOneLine start]; #endif // ... }
B: 選擇需要的插件、插入外部新的插件:
測試、線上階段接入
測試階段時可能有特殊的需求,而線上階段可能不需要保留界面部分的代碼。這個時候你可以根據(jù)工程的需要創(chuàng)建一個新的?podspec
, 在 podspec 里引入在測試、線上階段要引入的 MTHawkeye subspec, 然后在 podfile 內(nèi)引入
pod 'YourOnlineHawkeye', :podspec => 'xxx/yourOwnHawkeyeOnline.podspec', :configurations => 'Release'
然后在初始化內(nèi)根據(jù)自己的需要加載插件,配置插件是否啟動(默認(rèn)不啟動),如
#ifdef Release [MTHawkeyeUserDefaults shared].allocationsTraceOn = YES; // 根據(jù)需要開啟插件、配置插件 [[MTHawkeyeClient shared] setPluginsSetupHandler:^(NSMutableArray<id> *_Nonnull plugins) { [plugins addObject:[MTHAllocationsHawkeyeAdaptor new]]; // add your additional plugins here. } pluginsCleanHandler:^(NSMutableArray<id > *_Nonnull plugins) { }]; [[MTHawkeyeClient shared] startServer]; #endif
0x02 交互說明
基礎(chǔ)操作說明:
-
懸浮窗
- 展示、隱藏懸浮窗:使用三指長按兩秒手勢或者三指左滑手勢
- 顯示、隱藏懸浮窗插件:進(jìn)入設(shè)置界面,進(jìn)入 Floating Window,顯隱插件
- 進(jìn)入主面板:點擊浮窗直接查看最近一次查看的面板
-
設(shè)置界面:進(jìn)入主面板,點擊標(biāo)題呼出模塊切換界面,點擊右上角?
Setting
?進(jìn)入設(shè)置界面
各插件的界面交互文檔:詳見上文鏈接
0x03 開發(fā)自己的插件
如果有一個模塊在開發(fā)過程中需要避開很多坑,或者開發(fā)過程中調(diào)試/優(yōu)化相關(guān)的日志代碼很多,可以考慮編寫一個調(diào)試輔助組件,然后基于 Hawkeye 基礎(chǔ)框架 API,可將這個組件接入到 Hawkeye 框架中使用,以便統(tǒng)一交互和接口。
如果你關(guān)注的性能指標(biāo)在自動化測試時無法持續(xù)跟蹤,考慮編寫一個性能分析插件用于抓取性能數(shù)據(jù)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
- QE for Motor V1.3.0:汽车开发辅助工具解决方案工具包0次下载
- 解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具0次下载
- SimSurfing静噪滤波器设计辅助工具高功能版操作手册1次下载
- COVID辅助工具包0次下载
- 造林辅助工具包:更简单有效的造林0次下载
- Q-Touch开发辅助工具使用手册1次下载
- lcd汉字取模软件开发辅助工具下载6次下载
- 苹果ios蓝牙调试助手工具源代码下载7次下载
- 关于单片机、定时器等开发软件及辅助工具下载16次下载
- 单片机辅助工具3.0应用程序免费下载11次下载
- cad图形智能辅助工具免费下载4次下载
- 单片机开发常用辅助工具13次下载
- Keil的辅助工具和部份高级技巧87次下载
- Keil的辅助工具和部份高级技巧6次下载
- 便携式维修辅助工具在战场抢修中的应用12次下载
- TSP工具包軟件的應(yīng)用說明 672次閱讀
- SD NAND測試套件:提升存儲芯片驗證效率 405次閱讀
- QE for Cap Touch工具使用問題總結(jié) 508次閱讀
- fpga開發(fā)一般用什么軟件 4247次閱讀
- 電機(jī)控制調(diào)試助手怎么用 954次閱讀
- 多核應(yīng)用調(diào)試工具CodeViser介紹 1129次閱讀
- 一款用于Windows的開源反rookit (ARK)工具 3690次閱讀
- 關(guān)于手工殺毒輔助工具AntiSpy常用功能 1271次閱讀
- 常用藍(lán)牙調(diào)試工具分享 6771次閱讀
- 介紹使用IBERT調(diào)試FPGA芯片高速串行接口性能的步驟 6083次閱讀
- 如何實現(xiàn)單片機(jī)程序代碼的反匯編 6920次閱讀
- RT-Thread NetUtils的使用方法 8054次閱讀
- MATLAB程序調(diào)試的方法及工具介紹 6879次閱讀
- 裸眼3d電視機(jī)多少錢 1.1w次閱讀
- 16 款優(yōu)秀的Web開發(fā)輔助工具推薦 4130次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論