全能App研发助手!滴滴开源DoraemonKit

近日,滴滴开源App研发助手DoraemonKit,DoraemonKit简称DoKit,中文名哆啦A梦,意味着能够像哆啦A梦一样提供给他的主人各种各样的工具。

开发背景

每一个稍微有点规模的 App,总会自带一些线下的测试功能代码,比如环境切换功能、帧率查看功能等等,这些功能的切换入口往往放在各式各样的入口中,比如一些特殊的手势,双击 statusBar,双击某一个功能区块,或者新建一个 keyWindow 始终至于 App 最上方等等,而且每一个 App 里面的线下附带功能模块很多是相似的,比如帧率查看、内存和 CPU 监控等等,但是现在基本上都是每个 App 都是自己实现了一份,经历了以上的问题之后,DoraemonKit 就有了它存在的意义。

DoraemonKit 是一个功能集合面板,能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通有的辅助工具,功能强大,接入方便,便于扩展。

简单总结

1、DoraemonKit 能够快速让你的业务测试代码能够在这里统一管理,统一收口;

2、DoraemonKit 内置很多常用的工具,避免重复实现,一次接入,你将会拥有强大的工具集合。

效果演示

\"\"

功能模块

一、常用工具

【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如何使用?

iOS 接入文档

1.cocoapods依赖

 pod 'DoraemonKit/Core', '~\u0026gt; 1.1.4', :configurations =\u0026gt; ['Debug']    pod 'DoraemonKit/WithLogger', '~\u0026gt; 1.1.4', :configurations =\u0026gt; ['Debug']    pod 'DoraemonKit/WithGPS', '~\u0026gt; 1.1.4', :configurations =\u0026gt; ['Debug']    

Core subspec作为核心,必须引入。

如果你的日志是基于CocoaLumberjack,那你也可以引入WithLogger subspec。

MockGPS存在一些兼容性问题(绝大部分情况是好的,问题详见https://github.com/didi/DoraemonKit/issues/35), 如果你的app接入MockGPS存在问题的话,可以不用引入WithGPS subspec。

tip:只在Debug环境中进行集成,不要带到线上。有一些hook操作会污染线上代码。

2.使用DoraemonKit内置工具集的接入方式

在App启动的时候添加一下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    #ifdef DEBUG        [[DoraemonManager shareInstance] install];    #endif}

通过以上步骤你就可以使用DorameonKit所有的内置工具集合。如果你想把自己与业务相关的一些工具代码加入到DoraemonKit中做统一管理的话,你可以按照3的步骤来做。

3、添加自定义测试模块到Doraemon面板中(非必要)

比如我们要在Doraemon面板中添加一个环境切换的功能。

第一步:新建一个类,实现KDDoraemonPluginProtocol协议中的pluginDidLoad方法,该方法就是以后点击Doraemon工具面板中“环境切换”按钮触发的事件。

比如以代驾司机端为例,点击按钮之后会进入环境切换页面。

@implementation KDDoraemonEnvPlugin- (void)pluginDidLoad{    [APP_INTERACOTR.rootNav openURL:@\u0026quot;KDSJ://KDDoraemonSFViewController\u0026quot;];    [[DoraemonManager shareInstance] hiddenHomeWindow];} @end

第二步:在Doraemon初始化的地方添加第一步中添加的“环境切换”插件

调用DoraemonManager的以下方法:

[[DoraemonManager shareInstance] addPluginWithTitle:@\u0026quot;环境切换\u0026quot; icon:@\u0026quot;doraemon_default\u0026quot; desc:@\u0026quot;用于app内部环境切换功能\u0026quot; pluginName:@\u0026quot;KDDoraemonEnvPlugin\u0026quot; atModule:@\u0026quot;业务专区\u0026quot;];

依次代表 集成到DoraemonKit面板中的标题,图标,描述,插件名称,和所属于的模块。

比如以代驾司机端为例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    #ifdef DEBUG       [self configDoraemonKit];    #endif}//配置Doraemon工具集- (void)configDoraemonKit{    [[DoraemonManager shareInstance] addPluginWithTitle:@\u0026quot;环境切换\u0026quot; icon:@\u0026quot;doraemon_default\u0026quot; desc:@\u0026quot;用于app内部环境切换功能\u0026quot; pluginName:@\u0026quot;KDDoraemonEnvPlugin\u0026quot; atModule:@\u0026quot;业务专区\u0026quot;];    [[DoraemonManager shareInstance] addH5DoorBlock:^(NSString *h5Url) {        [APP_INTERACOTR.rootNav openURL:@\u0026quot;KDSJ://KDWebViewController\u0026quot; withQuery:@{@\u0026quot;urlString\u0026quot;:h5Url}];    }];    [[DoraemonManager shareInstance] install];}

关于Android的接入,可查看此链接:

https://github.com/didi/DoraemonKit/blob/master/Doc/android_cn_guide.md

关于该项目的更多信息,可查看GitHub:

https://github.com/didi/DoraemonKit

更多内容,请关注前端之巅。

\"\"

最近代码和Demo请到https://github.com/didi/DoraemonKit 下载。如果感觉还可以,给颗star吧。 一款适用于iOS App的线下测试工具集合。 【App信息查看】快速查看手机信息,App信息,权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦。 【沙盒浏览】App内部文件浏览的功能,并且能通过airDrop或者其他分享方式上传到PC中,进行更加细致的操作。 【MockGPS】App能定位到全国各地,支持地图地位和手动输入经纬度。 【H5任意门】开发测试同学可以快速输入H5页面地址,查看该页面效果。 【日志显示】每一条日志信息,都在在App的界面中显示出来,再也不需要导出日志这么麻烦。 【帧率监控】App 帧率信息提供波形图查看功能,让帧率监控的趋势更加明显。 【CPU监控】App CPU使用率信息提供波形图查看功能,让CPU监控的趋势更加形象。 【内存监控】App 内存使用量信息提供波形图查看功能,让内存监控的趋势更加鲜明。 【流量监控】拦截App内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们app中自带的“Charles”。 【自定义监控】可以选择你要监控的选项,包括FPS、CPU、内存、流量。监控完毕之后,把数据保存到本地,也可以导出来做更加细致的分析。 【颜色吸管】方便设计师UI捉虫的时候,查看每一个组件的颜色值是否设置正确。 【组件检查】可以抓取任意一个UI控件,查看它们的详细信息,包括控件名称、控件位置、背景色、字体颜色、字体大小。 【对齐标尺】参考Android系统自带测试工具,能够实时捕获屏幕坐标,并且可以查看组件是否对齐。
DoraemonKit简称 "DoKit" 。一款功能齐全的客户端( iOS 、Android )研发助手DoraemonKit 是一个功能平台,能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具,而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通有的辅助工具,并搭配我们的dokit平台,让功能得到延伸,接入方便,便于扩展。 简单总结: 1、DoraemonKit 能够快速让你的业务测试代码能够在这里统一管理,统一收口; 2、DoraemonKit 内置很多常用的工具,避免重复实现,一次接入,你将会拥有强大的工具集合; 3、搭配dokit平台,借助接口Mock、健康体检、文件同步助手让你方便和他人协同,极大的提升研发过程中的效率。 功能模块: 一、平台工具 1、【数据Mock】 App接口Mock解决方案,提供一套基于App网络拦截的接口Mock方案,无需修改代码即可完成对于接口数据的Mock。 2、【健康体检】 一键式操作,整合DoKit多项工具,数据可视化,快速准确定位问题,让你对app的性能了如指掌。 3、【文件同步助手】 通过终端服务,让你的终端空间在平台端完整的展现并提供强大的文件以及数据库操作能力。 二、常用工具 1、【App 信息查看】 快速查看手机信息,App 基础信息、签名相关、权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦; 2、【开发者选项 Android特有】 一键跳转开发者选项,避免安卓由于平台差异导致的入口不一致 3、【本地语言】 一键跳转本地语言,避免安卓由于平台差异导致的入口不一致 4、【沙盒浏览】 App 内部文件浏览的功能,支持删除和预览, 并且能通过 AirDrop 或者其他分享方式上传到 PC 中,进行更加细致的操作; 5、【MockGPS】 App 能定位到全国各地,支持地图地位和手动输入经纬度; 6、【H5任意门】 开发测试同学可以快速输入 H5 页面地址,查看该页面效果; 7、【Crash查看】 方便本地打印出出现 Crash 的堆栈; 8、【子线程UI】 快速定位哪一些 UI 操作在非主线程中进行渲染,避免不必要的问题;(iOS独有) 9、【清除本地数据】 一键删除沙盒中所有数据; 10、【NSLog】 把所有 NSLog 信息打印到UI界面,避免没有开发证书无法调试的尴尬; 11、【Lumberjack】 每一条 CocoaLumberjack 的日志信息,都在在 App 的界面中显示出来,再也不需要导出日志这么麻烦;(iOS独有) 12、【DBView】 通过网页方便快捷的操作应用内数据库,让数据库的调试变得非常优雅; 13、【模拟弱网】 限制网速,模拟弱网环境下App的运行情况。(android独有) 三、性能检测 1、【帧率】 App 帧率信息提供波形图查看功能,让帧率监控的趋势更加明显; 2、【CPU】 App CPU 使用率信息提供波形图查看功能,让 CPU 监控的趋势更加形象; 3、【内存】 App 内存使用量信息提供波形图查看功能,让内存监控的趋势更加鲜明; 4、【流量监控】 拦截 App 内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们 App 中自带的 "Charles"; 5、【卡顿】 锁定 App 出现卡顿的时刻,打印出对应的代码调用堆栈; 6、【大图检测】 通过流量监测,找出所有的大小超标的图片,避免下载大图造成的流量浪费和渲染大图带来的CPU消耗。 7、【启动耗时】 无侵入的统计出App启动过程的总共耗时; 8、【UI层级检查】 检查出每一个页面中层级最深的元素; 9、【函数耗时】 从函数级别分析app性能瓶颈; 10、【Load】 找出所有的Load方法,并给出耗时分析;(iOS独有) 11、【内存泄漏】 找出App中所有的内存泄漏的问题。 四、视觉工具 1、【颜色吸管】 方便设计师 UI 捉虫的时候,查看每一个组件的颜色值是否设置正确; 2、【组件检查】 可以抓取任意一个UI控件,查看它们的详细信息,包括控件名称、控件位置、背景色、字体颜色、字体大小; 3、【对齐标尺】 参考 Android 系统自带测试工具,能够实时捕获屏幕坐标,并且可以查看组件是否对齐; 4、【元素边框线】 绘制出每一个 UI 组件的边框,对于组件布局有一定的参考意义。 五、Weex专项工具(CML专项工具) 1、【console日志查看】 方便在端上查看每一个Weex文件中的console日志,提供分级和搜索功能; 2、【storage缓存查看】 将Weex中的storage模块的本地缓存数据可视化展示; 3、【容器信息】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值