滴滴出行开源项目doraemonkit食用指南
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自http://javaexception.com/archives/94
doraemonkit 功能介绍
一两周前在地铁上刷任玉刚的公众号,看到他推荐了滴滴出行的几个开源项目doraemonkit,挺好奇的,到了公司打开电脑,对其中的第一个开源项目doraemonkit很有兴趣,按照readme上的介绍说,doraemonkit中文名称为哆啦A梦,是一个功能集合面板,像哆啦A梦一样,可以提供各种工具。
doraemonkit是一个支持Android和ios的开源项目,这里我们关注的是Android部分,提供的常用工具包括如下部分:
1. App基本信息(包名,应用版本号,最低系统版本,目标系统版本号,手机型号,手机系统版本,sd卡剩余空间,系统剩余空间,是否Root,屏幕分辨率,屏幕密度Density,使用到的权限信息如地理位置,拍照,麦克风,设备信息,通讯录等)。
2.沙盒浏览(用来查阅App私有目录下的文件,诸如sharepreference,数据库db文件等,doraemonkit还支持修改sharepreference文件的内容,同时让app生效,貌似还有点小bug,得给doraemonkit维护者提bug,也支持查看数据库对应表的内容)。
3.位置模拟(可以修改地理位置,在App的测试阶段还是很有用处的,现在市面上很多基于lbs的应用,对于这类App测试很友好)
4.H5任意门(这个功能相当有用,我们的商业App也是使用了类似于Aroute的路由组件,按照约定的路由协议进行跳转,只需要在doraemonkit提供的api中,引入自己app的路由逻辑,就能体会到H5任意门的好处了,经过我的测试,我觉得这个功能很酷)
5.缓存清理功能(清除掉App的缓存数据,通过这个快捷按钮的话,很便捷,不然就得在系统设置里面经过多级菜单的选择,才能找到清理缓存的按钮)
6.性能监控部分,帧率(暂未体验过),CPU,RAM,卡顿检测,耗时,自定义等
7.流量监控,对这部分很感兴趣,直接在app的悬浮页面上显示App的网络请求数据,以及响应数据
8.视觉工具,包括取色器,对其标尺,控件检查,布局边框等功能,这让我想起了饿了么的视觉验收工具UETool这个开源项目,跟这个类似。
总体而言,觉得功能挺丰富的,几乎是日常开发中不得不用到的工具,相信这可以极大的提高我们的开发效率,也可以更方便我们优化自己app的性能。
集成doraemonkit到业务App中
先看张效果图

在app/build.gradle里面添加远程依赖库
debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:1.1.6'
releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:1.1.6'
在Application类中添加DoraemonKit类的声明。
DoraemonKit.install(this); // H5任意门功能需要,非必须
DoraemonKit.setWebDoorCallback(new WebDoorManager.WebDoorCallback() {
@Override
public void overrideUrlLoading(Context context, String s) {
// 使用自己的H5容器打开这个链接
}
});
如果业务中,h5相关的业务较多,可以集成自己业务的h5跳转逻辑,或者是路由逻辑。如果没有h5的业务,就可以忽略。
到此基本的集成已经完毕,doraemonkit的大部分功能都可以使用了,除了流量监控外。
如果想要对网络进行监控,还需要使用如下配置。
在root下的build.gradle文件里面,添加
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
在app/build.gradle里面还需要启动这个插件
apply plugin: 'android-aspectjx'
另外还需要注意的一点是,Okhttp的用法。
原来业务代码中Okhttp的实例化代码得修改为如下的形式
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
原因是aspectjx hook的是Builder的有参构造方法,需要注意(经作者指点)。
代码地址位于https://github.com/leanote/leanote-android/tree/feature/doraemonkit。
上图看看集成后的效果。



总结:
doraemonkit开源项目目前还在迭代过程中,虽然还存在部分小bug,但我相信后续总会解决的,相信doraemonkit对我们做App开发的同学有很大的帮助.
Github地址:
https://github.com/didi/DoraemonKit
滴滴出行开源项目doraemonkit食用指南的更多相关文章
- 开源项目SMSS开发指南(二)——基于libevent的线程池
libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服 ...
- 开源项目SMSS开发指南
SMSS是一个由我个人发起的开源项目,目的是建立一套轻量化,高可用,高安全和方便扩展的业务支撑框架.SMSS面向TCP/IP层开发,适合扩展上层业务接口.数据结构传输序列化通过Protobuf实现.传 ...
- Google 开源项目的风格指南
谷歌C++代码风格指南.农业所需的代码.更难得的是不FQ,决定性的最爱!! . http://zh-google-styleguide.readthedocs.org/en/latest/google ...
- 开源项目SMSS发开指南(四)——SSL/TLS加密通信详解
本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵 ...
- 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)
继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...
- 开源项目SMSS开源项目(三)——protobuf协议设计
本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf pro ...
- Google开源项目风格指南
Google开源项目风格指南 来源 https://github.com/zh-google-styleguide/zh-google-styleguide Google 开源项目风格指南 (中文版) ...
- 阿里巴巴的26款超神Java开源项目!
来源:https://segmentfault.com/a/1190000017346799 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
随机推荐
- 《ServerSuperIO Designer IDE使用教程》- 7.增加机器学习算法,通讯采集数据与算法相结合。发布:4.2.5 版本
v4.2.5更新内容:1.修复服务实例设置ClearSocketSession参数时,可能出现资源无法释放而造成异常的情况.2.修复关闭宿主程序后进程仍然无法退出的问题.2.增加机器学习框架.3.优化 ...
- 首个企业架构TOGAF角色扮演案例培训的诞生
BangEA企业架构系列在不同机构做了不少TOGAF认证课,自己都觉得有点枯燥了,我在想我们IT帮2020年第一期的认证课是不是该换种授课方式呢?想到就做......TOGAF认证培训,最早主要就是讲 ...
- GO基础之Map
go开发手册: https://studygolang.com/pkgdoc 一.什么是map 有资料翻译成地图.映射或字典.但是大多数习惯上翻译成集合.1.map是Go中的内置类型,它将一个值与 ...
- DOM CSS
DOM CSS HTML DOM 允许 JavaScript 改变 HTML 元素的样式. 改变 HTML 样式 如需改变 HTML 元素的样式,请使用这个语法: document.getElemen ...
- Python完全平方数
python解题源代码如下: import math """ 简述:一个整数,它加上100和加上268后都是一个完全平方数 提问:请问该数是多少? Python解题思路分 ...
- 43-安装 Docker Machine
前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...
- oracle常用查询sql
oracle常用查询sql 原创 gordon陈 发布于2018-05-10 22:32:18 阅读数 297 收藏 展开 #!/bin/sh## create by Gordon Chen echo ...
- & 和 && 的区别,与(&)运算符、位移运算符(<< 、>>、>>>)的含义及使用(Java示例)
& 和 && 的区别,与(&)运算符.位移运算符(<< .>>.>>>)的含义及使用(Java示例) 1. & 和 & ...
- Master Note for Transportable Tablespaces (TTS) -- Common Questions and Issues (Doc ID 1166564.1)
APPLIES TO: Oracle Database Cloud Exadata Service - Version N/A and laterOracle Database Cloud Servi ...
- busybox启动流程简单解析:从init到shell login
关键词:kernel_init().init.inittab.wait/waitpid.fork/vfork.setsid().execvp/execlp.dup2等等. 由于遇到一系列定制,从ini ...