先來感受一波
一顺呕、常用工具
- 【App 信息查看】 快速查看手機(jī)信息,App 信息掰茶,權(quán)限信息的渠道萤厅,避免去手機(jī)設(shè)置查找或者查看項(xiàng)目源代碼的麻煩橄抹;
- 【沙盒瀏覽】 App 內(nèi)部文件瀏覽的功能,支持刪除和預(yù)覽, 并且能通過 AirDrop 或者其他分享方式上傳到 PC 中祈坠,進(jìn)行更加細(xì)致的操作害碾;
- 【MockGPS】 App 能定位到全國各地,支持地圖地位和手動(dòng)輸入經(jīng)緯度赦拘;
- 【H5任意門】 開發(fā)測(cè)試同學(xué)可以快速輸入 H5 頁面地址慌随,查看該頁面效果;
- 【Crash查看】 方便本地打印出出現(xiàn) Crash 的堆棧躺同;
- 【子線程UI】 快速定位哪一些 UI 操作在非主線程中進(jìn)行渲染阁猜,避免不必要的問題;
- 【清除本地?cái)?shù)據(jù)】 一鍵刪除沙盒中所有數(shù)據(jù)蹋艺;
- 【NSLog】 把所有 NSLog 信息打印到UI界面剃袍,避免沒有開發(fā)證書無法調(diào)式的尷尬;
- 【Lumberjack】 每一條 CocoaLumberjack 的日志信息捎谨,都在在 App 的界面中顯示出來民效,再也不需要導(dǎo)出日志這么麻煩憔维。
二、性能檢測(cè)
- 【幀率】 App 幀率信息提供波形圖查看功能畏邢,讓幀率監(jiān)控的趨勢(shì)更加明顯业扒;
- 【CPU】 App CPU 使用率信息提供波形圖查看功能,讓 CPU 監(jiān)控的趨勢(shì)更加形象舒萎;
- 【內(nèi)存】 App 內(nèi)存使用量信息提供波形圖查看功能程储,讓內(nèi)存監(jiān)控的趨勢(shì)更加鮮明;
- 【流量】 攔截 App 內(nèi)部流量信息臂寝,提供波形圖展示章鲤、流量概要展示、流量列表展示咆贬、流量篩選败徊、流量詳情,對(duì)流量信息統(tǒng)一攔截素征,成為我們 App 中自帶的 “Charles”集嵌;
- 【卡頓】 鎖定 App 出現(xiàn)卡頓的時(shí)刻,打印出對(duì)應(yīng)的代碼調(diào)用堆棧御毅;
- 【自定義】 可以選擇你要監(jiān)控的選項(xiàng),包括 FPS怜珍、CPU端蛆、內(nèi)存、流量酥泛。監(jiān)控完畢之后今豆,把數(shù)據(jù)保存到本地,也可以導(dǎo)出來做更加細(xì)致的分析柔袁;
- 【Load 耗時(shí)】 Load 函數(shù)耗時(shí)是 iOS 啟動(dòng)性能優(yōu)化中重要的一項(xiàng)呆躲,該功能可以打印出所有 Load 函數(shù)的耗時(shí),給開發(fā)者以參考捶索。
三插掂、視覺工具
- 【顏色吸管】 方便設(shè)計(jì)師 UI 捉蟲的時(shí)候,查看每一個(gè)組件的顏色值是否設(shè)置正確腥例;
- 【組件檢查】 可以抓取任意一個(gè)UI控件辅甥,查看它們的詳細(xì)信息,包括控件名稱燎竖、控件位置璃弄、背景色、字體顏色构回、字體大邢目椤疏咐;
- 【對(duì)齊標(biāo)尺】 參考 Android 系統(tǒng)自帶測(cè)試工具,能夠?qū)崟r(shí)捕獲屏幕坐標(biāo)脐供,并且可以查看組件是否對(duì)齊浑塞;
- 【元素邊框線】 繪制出每一個(gè) UI 組件的邊框,對(duì)于組件布局有一定的參考意義患民。
DoraemonKit如何使用
1缩举、cocoapods依賴
#### Debug調(diào)試相關(guān) ####
def debugTool
# debug工具
pod 'DoraemonKit/Core', '~> 3.0.4', :configurations => ['Debug'] #必選
# pod 'DoraemonKit/WithGPS', '~> 3.0.4', :configurations => ['Debug', 'RunDebug'] #可選
pod 'DoraemonKit/WithLoad', '~> 3.0.4', :configurations => ['Debug'] #可選
# pod 'DoraemonKit/WithLogger', '~> 3.0.4', :configurations => ['Debug', 'RunDebug'] #可選
pod 'DoraemonKit/WithDatabase', '~> 3.0.4', :configurations => ['Debug'] #可選
# pod 'DoraemonKit/WithMLeaksFinder', '~> 3.0.4', :configurations => ['Debug', 'RunDebug'] #可選 //xcode升級(jí)到12.5報(bào)錯(cuò)
end
Core subspec作為核心,必須引入匹颤。
如果你的日志是基于CocoaLumberjack仅孩,那你也可以引入WithLogger subspec。
MockGPS存在一些兼容性問題(絕大部分情況是好的印蓖,問題詳見https://github.com/didi/DoraemonKit/issues/35), 如果你的app接入MockGPS存在問題的話辽慕,可以不用引入WithGPS subspec。
tip:只在Debug環(huán)境中進(jìn)行集成赦肃,不要帶到線上溅蛉。有一些hook操作會(huì)污染線上代碼。
2他宛、使用DoraemonKit內(nèi)置工具集的接入方式
在App啟動(dòng)的時(shí)候添加一下代碼
#ifdef DEBUG
#import <DoraemonKit/DoraemonManager.h>
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
[[DoraemonManager shareInstance] install];
#endif
}
通過以上步驟你就可以使用DorameonKit所有的內(nèi)置工具集合船侧。如果你想把自己與業(yè)務(wù)相關(guān)的一些工具代碼加入到DoraemonKit中做統(tǒng)一管理的話,你可以按照3的步驟來做厅各。
3镜撩、添加自定義測(cè)試模塊到Doraemon面板中(非必要)
比如我們要在Doraemon面板中添加一個(gè)環(huán)境切換的功能。
第一步:新建一個(gè)類队塘,實(shí)現(xiàn)DoraemonPluginProtocol協(xié)議中的pluginDidLoad方法袁梗,該方法就是以后點(diǎn)擊Doraemon工具面板中“環(huán)境切換”按鈕觸發(fā)的事件。
比如以代駕司機(jī)端為例憔古,點(diǎn)擊按鈕之后會(huì)進(jìn)入環(huán)境切換頁面遮怜。
@implementation KDDoraemonEnvPlugin
- (void)pluginDidLoad{
[APP_INTERACOTR.rootNav openURL:@"KDSJ://KDDoraemonSFViewController"];
[[DoraemonManager shareInstance] hiddenHomeWindow];
}
@end
第二步:在Doraemon初始化的地方添加第一步中添加的“環(huán)境切換”插件
調(diào)用DoraemonManager的以下方法:
[[DoraemonManager shareInstance] addPluginWithTitle:@"環(huán)境切換" icon:@"doraemon_default" desc:@"用于app內(nèi)部環(huán)境切換功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"業(yè)務(wù)專區(qū)"];
依次代表 集成到DoraemonKit面板中的標(biāo)題,圖標(biāo)鸿市,描述锯梁,插件名稱,和所屬于的模塊灸芳。
比如以代駕司機(jī)端為例:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
[self configDoraemonKit];
#endif
}
//配置Doraemon工具集
- (void)configDoraemonKit{
[[DoraemonManager shareInstance] addPluginWithTitle:@"環(huán)境切換" icon:@"doraemon_default" desc:@"用于app內(nèi)部環(huán)境切換功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"業(yè)務(wù)專區(qū)"];
[[DoraemonManager shareInstance] addH5DoorBlock:^(NSString *h5Url) {
[APP_INTERACOTR.rootNav openURL:@"KDSJ://KDWebViewController" withQuery:@{@"urlString":h5Url}];
}];
[[DoraemonManager shareInstance] install];
}
4涝桅、swift 接入方式
pod 同 OC 一樣
swift 4.0 4.2 5.0 接入方式都一樣
import UIKit
#if DEBUG
import DoraemonKit
#endif
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
#if DEBUG
DoraemonManager.shareInstance().install()
#endif
return true
}
}