阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

  • 2019-02-14
  • 本文字数:2745 字

    阅读完需:约 9 分钟

全能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', '~> 1.1.4', :configurations => ['Debug']    pod 'DoraemonKit/WithLogger', '~> 1.1.4', :configurations => ['Debug']    pod 'DoraemonKit/WithGPS', '~> 1.1.4', :configurations => ['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:@"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];}
复制代码


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


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


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


https://github.com/didi/DoraemonKit


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



2019-02-14 08:108101

评论

发布
暂无评论
发现更多内容

Hybrid技术的下一站是什么?

FinFish

Hybrid 小程序技术 小程序容器技术 Hybrid App

华为阅读与商务印书馆达成全面合作 携手传承中外经典名著

最新动态

杭钢集团:以一体化管控赋能为引领提升五大能力

用友BIP

数智化转型

使用TransBigData快速高效地处理、分析、挖掘出租车GPS数据

TiAmo

数据可视化 交互式可视化工具 TransBigData

仅使用 CSS 创建打字机动画效果

互联网工科生

CSS JavaScript 前端

软件测试 | Java接口的实际应用—制定标准

测吧(北京)科技有限公司

测试

软件测试 | 设计模式——代理设计

测吧(北京)科技有限公司

测试

亚信科技AntDB数据库与库瀚存储方案完成兼容性互认证,联合方案带来约20%性能提升

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

软件测试 | Java设计模式——适配器设计

测吧(北京)科技有限公司

测试

什么是CAE软件?哪个CAE软件好用?

智造软件

CAE 仿真软件 CAE软件

实时入库不用愁,HStore帮分忧

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

Hybrid App 性能优化的一些技术探讨

Onegun

性能 Hybrid

常见的CAE软件有哪些?

思茂信息

仿真软件 仿真技术 abaqus有限元仿真 CAE软件 结构分析软件

平台赋能技术创新,和鲸科技持续助力气象顶尖算法大赛

ModelWhale

人工智能 算法 气象 大气科学 在线编程

golang trace view 视图详解

蓝胖子的编程梦

golang Profile pprof Trace go tool

使用 Signia 实现 React 状态管理

高端章鱼哥

React Signia

华为与二十多家伙伴达成游戏先锋合作,共筑鸿蒙生态繁荣

最新动态

一条SQL如何被MySQL架构中的各个组件操作执行的?

砖业洋__

MySQL MySQL架构 MySQL优化器 MySQL执行器 MySQL存储引擎

C4D软件都应用在影视后期什么领域?

Finovy Cloud

速度提升10倍,腾讯基于Iceberg的数据治理与优化实践

腾讯云大数据

数据湖

软件测试 | Java抽象类的实际应用——模版设计

测吧(北京)科技有限公司

测试

Nevercenter CameraBag Photo for Mac(照片滤镜软件) 2023.3.0激活版

mac

苹果mac Windows软件 Nevercenter CameraBag 相机和滤镜应用程序

解锁Spring组件扫描的新视角

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

AI概念引爆ChinaJoy,聆心智能助力数字娱乐产业新应用

硬科技星球

技术创新、鸿蒙赋能,华为阅读带来全新商业机会

最新动态

关于文件传输软件和传输大文件你需要知道的一切

镭速

传输大文件

以数驱动 | 智能分析云助力流程制造行业绿色高效运营

用友BIP

智能分析

搭载KaihongOS的工业平板、机器人、无人机等产品通过OpenHarmony3.2 Release版本兼容性测评

Geek_2d6073

啾啾火箭队 宇宙 ChuChu Rocket Universe for Mac(益智解谜游戏)v1.3.0中文版

mac

mac游戏 苹果mac ChuChu Rocket Universe 益智游戏

探索 TypeScript 元组的用例

这我可不懂

typescript 数组 元组

软件测试/测试开发丨Python 内置库 日期与时间处理

测试人

Python 软件测试 内置库

全能App研发助手!滴滴开源DoraemonKit_开源_易翔_InfoQ精选文章