写点什么

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

评论

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

探索Reactor网络模型在当今应用领域的革新

华为云开发者联盟

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

全球LED显示屏市场机遇与挑战

Dylan

封装 芯片 LED显示屏 体育 全球

Ui2Code+ChatGPT助力低代码搭建 | 京东云技术团队

京东科技开发者

低代码 ChatGPT 企业号 7 月 PK 榜 Ui2Code

REST 无状态与有状态的理解与应用

Apifox

gRPC RESTful 开发 Rest REST API

7.25齐聚西安!助推国资国企建设一流司库管理体系

用友BIP

全球司库 国资国企

AI与数据双向赋能,DingoDB成向量海时代超强引擎

九章云极DataCanvas

中移链与BSN分布式云管平台集成,共同构建专属协同体系

BSN研习社

Spring高手之路4——深度解析Spring内置作用域及其在实践中的应用

砖业洋__

spring Singleton prototype Spring作用域 Spring原型作用域

企业数智化底座赋能国资国企数智监管

用友BIP

数智底座 国资国企

Centos8 stream系统编译安装Apache教程。

百度搜索:蓝易云

Apache 云计算 Linux centos 运维

Centos8 stream系统编译安装MySQL5.7教程。

百度搜索:蓝易云

MySQL 云计算 Linux centos 运维

Spring高手之路3——揭秘Spring依赖注入和SpEL表达式

砖业洋__

spring 依赖注入 属性注入 SpEL表达式 Bean配置

质押理财USDT系统搭建开发案例

薇電13242772558

绘出「星辰大海」:华为云Astro轻应用新手指南-第一章

华为云PaaS服务小智

云计算 华为 开发者 华为云

绘出「星辰大海」:华为云Astro轻应用新手指南-第二章

华为云PaaS服务小智

云计算 开发者 软件开发 华为云

矩阵起源通过ISO 三大体系认证!

MatrixOrigin

数据库 超融合 HTAP MatrixOrigin MatrixOne

O-Star | 矩阵起源2023届校招生入职啦~

MatrixOrigin

数据库 云原生 HTAP MatrixOrigin MatrixOne

抽象语法树AST必知必会 | 京东物流技术团队

京东科技开发者

前端 AST 抽象语法树 企业号 7 月 PK 榜

Apache Flink 在翼支付的实践应用

Apache Flink

大数据 flink 实时计算

什么是MES,MES系统有哪些功能模块?MES系统概述

优秀

MES系统 mes

Nautilus Chain 主网上线,创世 ZBC 质押即将开启

威廉META

极狐GitLab 3 步优化软件价值流,谨防偷走时间、制造瓶颈的“幕后黑手”

极狐GitLab

gitlab 可视化 软件研发 价值流管理 VSM

# **基于TiDB Binlog架构的主备集群切换操作手册**

TiDB 社区干货传送门

实践案例 管理与运维

记一次sst文件损坏修复过程

TiDB 社区干货传送门

故障排查/诊断

单一可信源代码托管平台的构建之道

极狐GitLab

gitlab 安全 高效 便捷 源代码管理

用 Generative AI 构建企业专属的用户助手机器人

TiDB 社区干货传送门

免费又好用的MES系统——万界星空MES系统重磅来袭

万界星空科技

开源

下载|GitLab 2023 年 DevSecOps 全球调研报告:安全左移深入人心、AI/ML 蔚然成风

极狐GitLab

gitlab DevSecOps AI/ML 安全左移 安全实践

MobPush 厂商通道申请指南

MobTech袤博科技

大数据 华为 程序员 前端 Android;

pump 日志错误信息疑问之你的pump 数据被gc了嘛?

TiDB 社区干货传送门

性能调优 实践案例 集群管理 TiDB 源码解读

阿里大牛用了一个月把Github上热度最高的Java面试八股文总结出来了,按这个学,找工作没问题

架构师之道

java面试

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