阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

全能 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:108095

评论

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

聊聊:Python

谢烟客

Python 人工智能 编程

微服务架构深度解析与最佳实践 - 第六部分

kimmking

微服务 最佳实践 深度解析 高可用

微服务架构深度解析与最佳实践 - 第七部分

kimmking

微服务 最佳实践 深度解析 高可用

程序员职业生涯的八点感想

池建强

程序员 职业

2019 年

贾献华

2020 2019 总结 日历 计划

微服务架构深度解析与最佳实践 - 第五部分

kimmking

微服务 最佳实践 深度解析 高可用

一个运营经理人的工作两周年总结

霍太稳@极客邦科技

高效工作 身心健康 项目管理 自我管理

越是困难,越是要做有分析判断能力的人

霍太稳@极客邦科技

创业 团队管理 个人成长

一个独立开发者,他是如何做到月入 20 万的?

非著名程序员

程序员 独立开发者 副业赚钱 开发者 程序人生

申请鲲鹏920测试机试水+编译nginx

草宝虫

nginx 鲲鹏920 centos7 armv8

你不是迷茫,只是缺乏目标

Steve

学习 身心健康 方法 自我管理

最近看了两本书:The Rules of Life 和 Make Big Happen

霍太稳@极客邦科技

创业 团队管理 自我管理

黄金思维圈,养成透过现象看本质的能力

非著名程序员

读书笔记 程序员 程序人生 提升认知

小程序的当下和未来可能 | GMTC.2019深圳站演讲文稿

崔红保

小程序 uni-app

两边夹的应用二

孙苏勇

算法 两边夹 重排序 函数式接口 Lambda

凡事必先骑上虎背

Steve

学习 态度 方法论

求稳不得

孙苏勇

职业 发展 职场

微服务架构深度解析与最佳实践 - 第四部分

kimmking

微服务 最佳实践 深度解析 高可用

浅谈数据中台

数据社

大数据 数据中台 数据仓库

微服务架构深度解析与最佳实践 - 第三部分

kimmking

微服务 最佳实践 深度解析 高可用

平均响应1000ms到200ms,PHP和Go那家强?

拖地先生

php 架构 性能优化 后台开发 运维

一文讲清楚 MySQL 事务隔离级别和实现原理,开发人员必备知识点

古时的风筝

MySQL 数据库 事务隔离级别 mysql事务 数据库事务

两边夹的应用

孙苏勇

算法 积水问题 两边夹

亚马逊云 AWS LightSail 搭建高性能 LNMP 环境并安全部署 Wordpress

蛋仔小蚂蚁

nginx Wordpress 部署 SELinux 安全上下文配置 亚马逊云 AWS Lightsail 安全

微服务架构深度解析与最佳实践-第二部分

kimmking

微服务 最佳实践 深度解析 高可用

【译】Rust 开发者的2019

WasmEdge

程序员 rust

微服务架构深度解析与最佳实践(全篇汇总)

kimmking

微服务 最佳实践 深度解析 高可用

微服务架构深度解析与最佳实践-第一部分

kimmking

微服务 最佳实践 深度解析 高可用

阿里笔记之数据模型

迹_Jason

大数据

数据分析师应该了解的数据湖

数据社

大数据 数据仓库 数据湖 数据分析

归去来兮:递归

曲镇

算法

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