先来感受一波
一、常用工具
- 【App 信息查看】 快速查看手机信息,App 信息,权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦;
- 【沙盒浏览】 App 内部文件浏览的功能,支持删除和预览, 并且能通过 AirDrop 或者其他分享方式上传到 PC 中,进行更加细致的操作;
- 【MockGPS】 App 能定位到全国各地,支持地图地位和手动输入经纬度;
- 【H5任意门】 开发测试同学可以快速输入 H5 页面地址,查看该页面效果;
- 【Crash查看】 方便本地打印出出现 Crash 的堆栈;
- 【子线程UI】 快速定位哪一些 UI 操作在非主线程中进行渲染,避免不必要的问题;
- 【清除本地数据】 一键删除沙盒中所有数据;
- 【NSLog】 把所有 NSLog 信息打印到UI界面,避免没有开发证书无法调式的尴尬;
- 【Lumberjack】 每一条 CocoaLumberjack 的日志信息,都在在 App 的界面中显示出来,再也不需要导出日志这么麻烦。
二、性能检测
- 【帧率】 App 帧率信息提供波形图查看功能,让帧率监控的趋势更加明显;
- 【CPU】 App CPU 使用率信息提供波形图查看功能,让 CPU 监控的趋势更加形象;
- 【内存】 App 内存使用量信息提供波形图查看功能,让内存监控的趋势更加鲜明;
- 【流量】 拦截 App 内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们 App 中自带的 “Charles”;
- 【卡顿】 锁定 App 出现卡顿的时刻,打印出对应的代码调用堆栈;
- 【自定义】 可以选择你要监控的选项,包括 FPS、CPU、内存、流量。监控完毕之后,把数据保存到本地,也可以导出来做更加细致的分析;
- 【Load 耗时】 Load 函数耗时是 iOS 启动性能优化中重要的一项,该功能可以打印出所有 Load 函数的耗时,给开发者以参考。
三、视觉工具
- 【颜色吸管】 方便设计师 UI 捉虫的时候,查看每一个组件的颜色值是否设置正确;
- 【组件检查】 可以抓取任意一个UI控件,查看它们的详细信息,包括控件名称、控件位置、背景色、字体颜色、字体大小;
- 【对齐标尺】 参考 Android 系统自带测试工具,能够实时捕获屏幕坐标,并且可以查看组件是否对齐;
- 【元素边框线】 绘制出每一个 UI 组件的边框,对于组件布局有一定的参考意义。
DoraemonKit如何使用
1、cocoapods依赖
#### Debug调试相关 ####
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升级到12.5报错
end
Core subspec作为核心,必须引入。
如果你的日志是基于CocoaLumberjack,那你也可以引入WithLogger subspec。
MockGPS存在一些兼容性问题(绝大部分情况是好的,问题详见https://github.com/didi/DoraemonKit/issues/35), 如果你的app接入MockGPS存在问题的话,可以不用引入WithGPS subspec。
tip:只在Debug环境中进行集成,不要带到线上。有一些hook操作会污染线上代码。
2、使用DoraemonKit内置工具集的接入方式
在App启动的时候添加一下代码
#ifdef DEBUG
#import
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
[[DoraemonManager shareInstance] install];
#endif
}
通过以上步骤你就可以使用DorameonKit所有的内置工具集合。如果你想把自己与业务相关的一些工具代码加入到DoraemonKit中做统一管理的话,你可以按照3的步骤来做。
3、添加自定义测试模块到Doraemon面板中(非必要)
比如我们要在Doraemon面板中添加一个环境切换的功能。
第一步:新建一个类,实现DoraemonPluginProtocol协议中的pluginDidLoad方法,该方法就是以后点击Doraemon工具面板中“环境切换”按钮触发的事件。
比如以代驾司机端为例,点击按钮之后会进入环境切换页面。
@implementation KDDoraemonEnvPlugin
- (void)pluginDidLoad{
[APP_INTERACOTR.rootNav openURL:@"KDSJ://KDDoraemonSFViewController"];
[[DoraemonManager shareInstance] hiddenHomeWindow];
}
@end
第二步:在Doraemon初始化的地方添加第一步中添加的“环境切换”插件
调用DoraemonManager的以下方法:
[[DoraemonManager shareInstance] addPluginWithTitle:@"环境切换" icon:@"doraemon_default" desc:@"用于app内部环境切换功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"业务专区"];
依次代表 集成到DoraemonKit面板中的标题,图标,描述,插件名称,和所属于的模块。
比如以代驾司机端为例:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
[self configDoraemonKit];
#endif
}
//配置Doraemon工具集
- (void)configDoraemonKit{
[[DoraemonManager shareInstance] addPluginWithTitle:@"环境切换" icon:@"doraemon_default" desc:@"用于app内部环境切换功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"业务专区"];
[[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
}
}