滴滴正式发布开源客户端研发助手DoKit 3.0,新特性解读
导读:DoraemonKit,简称 DoKit,中文名哆啦 A 梦,是滴滴开源的一款功能齐全的客户端( iOS 、Android )研发助手。今天,Dokit 3.0 版本正式发布,开发者朋友可以选择更新、试用,本文是 DoKit 团队对本次更新的技术解读。
Dokit 3.0-不只是工具
点击上图可进入Github项目页
DoKit 3.0 相比于上一个版本一共解决了 github 上的 issues 70 多个,合并 PR 30 多个; 内部架构升级,其中性能和代码的健壮性都得到了显著的提升; 工具优化用户体验优化。
网络拦截统一了 okhttp、urlconnection; 悬浮窗新增了普通模式,不再需要系统悬浮窗权限; 位置模拟现已支持百度、腾讯、高德、系统原生; AOP 的代码插装方案也由一开始的 Aspectj 改成了 ASM 方案,兼容性和性能也都有了明显的提升。
NSLog 监控、子线程 UI、CocoaLumberjack 日志日志监控等功能不需要重新启动 App 即可进行开关; pod 仓库多地备份(github、gitee、gitlab),解决 pod install 缓慢的问题; 解决 DoKit 的 window 影响 UIMenuController 的吗,导致业务方在某些机型弹不出来的问题; 减少代码 hook 对于全局的影响; 全局支持中英文切换。
提供一套基于 App 网络拦截的接口 Mock 方案,无需修改代码即可完成对于接口数据的 Mock。
https://www.dokit.cn/#/index/HealthTest
主要能帮我们将 db 等本地数据在浏览器中进行操作,十分方便。DBView 和本地沙盒的主要区别在于本地数据库在端上的体验效果并不是很好,因为受限于屏幕的大小,所以我们引入这 DBView,可以将我们的本地数据库和浏览器打通,在浏览器上进行增删改查等等操作,提升我们的效率。
http://xingyun.xiaojukeji.com/docs/dokit/#/DBView
android 直接接入的 Android-Debug-Database 方案; iOS 是由社区同学 y500 提供的 iOSDebugDatabase, 感谢该同学的贡献。
了解详情:
http://xingyun.xiaojukeji.com/docs/dokit/#/TimeProfiler
5)其他工具
快速跳转到应用设置 :避免手动去设置里面寻找 App 的麻烦;
NSUserDefalult(iOS) :对于 NSUserDefalult 的数据方便进行增删改查;
UI 层级检查 :检查每一个 UI 界面的成绩,成绩太深的话,会影响一定的性能;
启动耗时 :检查每一次启动消耗的时间;
UI 结构(IOS) :可以动态改变每一个 UI 元素的属性,感谢社区 HDB-Li 提供。
用户登录
使用中心
产品中心: 包含 接口 Mock 和 健康体检 的功能详细介绍
控制台: 主要提供产品管理、用户管理、数据 Mock、健康体检等功能。必须登录以后才能访问,你可以创建的每一个产品。然后需要将你的 ProductId 集成到 Android 和 iOS 中去。
http://xingyun.xiaojukeji.com/docs/dokit/#/WebInstruction
接口模板效果图
以前我们要在移动端要进行接口 Mock 的常规操作,基本上都是先拿到一个定义好的 mock 接口然后在代码中修改 url,然后等待编译、完成以后运行一下好像没什么问题然后又改回去编译。重复这样的操作。
一般来说我们泛前端都是需要依赖后端的接口进行开发的,这个操作无法同时进行,所以当多条业务需求同时开发的时候就容易由于资源不足和安排不当造成进度阻塞。
关于测试用例。一般来说我们在需求评审完成以后我们的测试人员就开始编写测试用例了,但是这样的用例往往都是文档化的,我们研发要进行用例测试边界情况的时候往往是通过修改代码来完成的。测试用例大部分用例也是依赖接口的。
启动
正常的操作页面然后在每个页面根据倒计时提醒停留 10s 左右,完成每个页面的性能数据采集工作。
点击上传,填写用例的名称和测试人员名称,等待数据上传完成。
我们的每一次性能测试结果都将在我们的后台中进行记录。我们平台端记录的数据十分全面,基本上涵盖了我们的大部分需求,并且我们在后端会针对性能数据进行精准的分析并给出分析结果。还有就是我们针对性能数据进行了图表化的展示,使得每一次的性能测试更加直观。这样我们在整理的时候也不需要自己再根据数据去导出各种报表了,直接截图就可以用了。在这一块还是比较贴心的。
Cocoapods 依赖
pod 'DoraemonKit/Core', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 必选
pod 'DoraemonKit/WithLogger', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选
pod 'DoraemonKit/WithGPS', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选
pod 'DoraemonKit/WithLoad', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选
pod 'DoraemonKit/WithDatabase', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选
pod 'DoraemonKit/WithMLeaksFinder', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选
pod 'DoraemonKit/WithWeex', :git => "https://github.com/didi/DoraemonKit.git", :tag => '3.0.0', :configurations => ['Debug']// 可选 初始化 SDK
初始化SDK
#ifdef DEBUG
#import <DoraemonKit/DoraemonManager.h>
#endif
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
[[DoraemonManager shareInstance] installWithPid:@"productId"];//productId 为在"平台端操作指南"中申请的产品 id
#endif
}
# 添加仓库
buildscript {
apply from: "config.gradle"
repositories {
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath 'com.didichuxing.doraemonkit:doraemonkit-plugin:3.0.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
插件引入
# 项目 app module 的 build.gradle 中
apply plugin: 'com.didi.dokit'
debugImplementation "com.didichuxing.doraemonkit:doraemonkit:3.0.0"
releaseImplementation "com.didichuxing.doraemonkit:doraemonkit-no-op:3.0.0"
public class App extends Application {
private static final String TAG = "App";
public static Activity leakActivity;
@Override
public void onCreate() {
super.onCreate();
//productId 为在"平台端操作指南"中申请的产品 id
DoraemonKit.install(this, null, "productId");
}
}
获奖名单每个月都在该issues和「DoKit开源社区」公众号中同步,获奖同学联系QQ用户群 @didi_iOS_易翔 或者 @didi_Android_金台 领奖。
https://github.com/didi/DoraemonKit