Dokit 开源库:简化 Android 应用开发的利器

Dokit 开源库:简化 Android 应用开发的利器

  • 一、Dokit 简介
  • 二、Dokit 功能
  • 三、Dokit 使用
    • 3.1 DoKit Android 最新版本
    • 3.2 DoKit Android 接入步骤
  • 四、总结

在 Android 应用开发过程中,我们经常需要处理调试、性能优化和用户体验等方面的问题。然而,这些任务通常需要大量的时间和精力。幸运的是,有一款名为 Dokit 的开源库可以帮助我们简化这些任务,提高开发效率和应用质量。

一、Dokit 简介

Dokit 是一款功能强大且易于集成的 Android 开发工具库,旨在帮助开发人员更轻松地进行应用调试、性能优化和用户体验改进。它提供了丰富的调试工具、性能监测和悬浮窗功能,使开发者可以更方便地查看应用的运行状态、性能指标和运行时信息。
在这里插入图片描述
Github:https://github.com/didi/DoKit

文档:https://xingyun.xiaojukeji.com/docs/dokit/#/intro

网站:https://www.dokit.cn/

介绍:https://zhuanlan.zhihu.com/p/196625684

二、Dokit 功能

Dokit 提供了许多有用的功能,以下是其中一些主要功能的介绍:

  1. 悬浮窗调试工具: Dokit 提供了一个可自定义的悬浮窗,可以在应用运行时显示调试信息,包括布局边界、视图层级、性能指标等。这使得调试 UI 布局和交互变得更加方便。

  2. 应用性能监测: Dokit 可以监测应用的性能指标,如 CPU 使用率、内存占用、网络请求等,并以可视化的方式展示。这有助于开发人员发现性能瓶颈并进行优化。

  3. 网络请求监控: Dokit 可以拦截应用的网络请求,并展示请求的详细信息,如请求 URL、请求参数、响应数据等。这对于调试和分析网络请求非常有用。

  4. 应用信息查看: Dokit 提供了应用信息查看功能,包括应用版本、设备信息、权限信息等。这有助于了解应用的运行环境和配置。

  5. 自定义插件: Dokit 还支持开发者自定义插件,根据自己的需求扩展功能。你可以根据应用的特定需求,添加自定义的调试工具和监测功能。

三、Dokit 使用

3.1 DoKit Android 最新版本

由于jcenter事件的影响,我们需要将DoKit For Android迁移到mavenCentral(),但是需要更改groupId.所以大家要注意一下,具体的更新信息如下:

lastversion:3.5.0;kotlin编译插件为1.4.32 ;支持Gradle 6.8及以上

lastversion:3.5.0.1; kotlin编译插件为1.3.72; 支持Gradle 6.8及以下

DoKit最新版本描述
3.3.5及以后的AndroidxdebugImplementation “io.github.didi.dokit:${aarName}: ${lastversion}”(1)dokitx的library和plugin的groupId及版本号需要保持一致;(2)AGP最低版本要求3.3.0+
3.3.5及以前的Androidx版本debugImplementation “com.didichuxing.doraemonkit:${aarName}:3.3.5”(1)dokitx的library和plugin的groupId及版本号需要保持一致; (2)AGP最低版本要求3.3.0+
支持android supportdebugImplementation “com.didichuxing.doraemonkit:${aarName}:3.3.5”support放弃更新,请大家尽快升级和适配Androidx

${aarName}需要改为指定的名称,参考如下:

//核心模块
debugImplementation "io.github.didi.dokit:dokitx:${lastversion}"//文件同步模块
debugImplementation "io.github.didi.dokit:dokitx-ft:${lastversion}"//一机多控模块
debugImplementation "io.github.didi.dokit:dokitx-mc:${lastversion}"//weex模块
debugImplementation "io.github.didi.dokit:dokitx-weex:${lastversion}"//no-op 模块
releaseImplementation "io.github.didi.dokit:dokitx-no-op:${lastversion}"

debugImplementation 需要根据自己的构建改成对应的productFlavor

下面所有的例子均用dokitx举例。要使用support版本请将dokitx改为dokit即可。 v3.3.5以后的版本需要添加mavenCentral()仓库

3.2 DoKit Android 接入步骤

  1. Gradle 依赖
dependencies {…debugImplementation 'io.github.didi.dokit:dokitx:${lastversion}'releaseImplementation 'io.github.didi.dokit:dokitx-no-op:${lastversion}'}
  1. 初始化

在 App 启动的时候进行初始化。

@Override
public void onCreate() {DoKit.Builder(this).productId("需要使用平台功能的话,需要到dokit.cn平台申请id").build()} 
  1. 流量监控以及其他AOP功能(可选)

AOP包括以下几个功能:
1)百度、腾讯、高德地图的经纬度模拟
2)UrlConnection、Okhttp 抓包以及后续的接口hook功能
3)App 启动耗时统计
4)慢函数
5)大图

在项目的 build.gradle 中添加 classpath。

buildscript {dependencies {…classpath 'io.github.didi.dokit:dokitx-plugin:${lastversion}'}
}

在 app 的 build.gradle 中添加 plugin。

apply plugin: 'com.didi.dokit'

插件配置选项: 添加到app module 的build.gradle文件下 与android {}处于同一级

dokitExt {//通用设置comm {//地图经纬度开关gpsSwitch true//网络开关networkSwitch true//大图开关bigImgSwitch true//webView js 抓包webViewSwitch true}slowMethod {//调用栈模式配置 对应gradle.properties中DOKIT_METHOD_STRATEGY=0stackMethod {//默认值为 5ms 小于该值的函数在调用栈中不显示thresholdTime 10//调用栈函数入口 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的入口 假如不需要可以去掉该字段enterMethods = ["com.didichuxing.doraemondemo.MainDebugActivity.test1"]//黑名单 粒度最小到类 暂不支持到方法  千万不要用我默认的配置 如果有特殊需求修改成项目中自己的入口 假如不需要可以去掉该字段methodBlacklist = ["com.facebook.drawee.backends.pipeline.Fresco"]}//普通模式配置 对应gradle.properties中DOKIT_METHOD_STRATEGY=1normalMethod {//默认值为 500ms 小于该值的函数在运行时不会在控制台中被打印thresholdTime 500//需要针对函数插装的包名 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目包名 假如不需要可以去掉该字段packageNames = ["com.didichuxing.doraemondemo"]//不需要针对函数插装的包名&类名 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目包名 假如不需要可以去掉该字段methodBlacklist = ["com.didichuxing.doraemondemo.dokit"]}}
}

其中strategymethodSwitch配置项已经弃用。新的配置开关位于项目根目录下的gradle.properties中。

具体的配置如下所示:

# dokit全局配置
# 插件开关
DOKIT_PLUGIN_SWITCH=true
# DOKIT读取三方库会和booster冲突 如果你的项目中也集成了booster 建议将开关改成false
DOKIT_THIRD_LIB_SWITCH=true
# 插件日志
DOKIT_LOG_SWITCH=true
# 自定义Webview的全限定名 主要是作用于h5 js抓包和数据mock
DOKIT_WEBVIEW_CLASS_NAME=com/didichuxing/doraemonkit/widget/webview/MyWebView
# dokit 慢函数开关
DOKIT_METHOD_SWITCH=true
# dokit 函数调用栈层级
DOKIT_METHOD_STACK_LEVEL=4
# 0:默认模式 打印函数调用栈 需添加指定入口  默认为application onCreate 和attachBaseContext
# 1:普通模式 运行时打印某个函数的耗时 全局业务代码函数插入
DOKIT_METHOD_STRATEGY=0

理由: 为了减少项目的编译时间,所以慢函数的默认开关为false。再加上plugin的transform注册必须早于project.afterEvaluate。所以无法通过原先的配置项拿到配置信息,只能通过在全局的gradle.properties中的配置可以拿到。

tips: 当修改完DoKit插件的相关配置以后一定要clean一下重新编译才能生效。这是AS的缓存增量编译导致的,暂时没有其他好的解决方案。

  1. 自定义功能组件(可选)
    自定义功能组件

四、总结

Dokit 是一款功能强大且易于集成的 Android 开发工具库,它提供了丰富的调试工具、性能监测和悬浮窗功能,帮助开发人员更轻松地进行应用调试、性能优化和用户体验改进。通过集成 Dokit,开发人员可以更方便地查看应用的运行状态、性能指标和运行时信息。你可以在 Dokit 的官方文档中进一步了解其更详细的功能和使用方法,祝你在 Android 应用开发中取得更高的效率和质量!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发

stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发 文章目录 stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h 四、MDK串口收发…

期货股市联动(期股联动助推资本市场上扬)

期股联动——期货股市助推资本市场上扬 随着我国资本市场的不断发展,期货和股票这两个市场也在逐渐紧密地联系起来。期货和股票的相互作用是一种“期股联动”,它能够促进资本市场的上扬。 期货与股票市场 期货市场是一种标准化的场外交易市场&#xf…

【jvm从入门到实战】(十) 实战篇-内存调优

内存溢出和内存泄漏:在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内存泄漏引起的。少量的内存泄漏可以容忍&#x…

mysql:查看尝试连接mysql服务器的次数(包含成功和失败的尝试)

运行命令show global status like Connections;查看尝试连接mysql服务器的次数(包含成功和失败的尝试)。 例如:

华为云Stack 8.X 流量模型分析(二)

二、流量模型分析相关知识 1.vNIC ​ 虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC,每个 NIC 可以是多个 vNIC 的基础。 ​ 将 vNIC 附加到虚拟机时,Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的…

七:爬虫-数据解析之正则表达式

七:正则表达式概述 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母&#xf…

如何下载知网论文、专利的PDF格式

知网的论文格式有其特有的格式:CAJ。将CAJ格式转化为Word或者PDF非常麻烦,且会出现乱码的情况,直接用知网官方的CAJ浏览器也不太方便。为此,困扰了许久。 其实,知网可以直接下载PDF格式,只需在浏览器上安装…

Python启动提示ERROR: [WinError 10013] ��һ�ַ���Ȩ�޲�����ķ�ʽ����һ�������׽��ֵij��ԡ�

启动项目后: 其实就是默认的5000端口号被占用,端口号冲突 ,改下端口即可。 点击:编辑配置 空格加 --port5001 启动成功,点击下图标记位置

【STM32工具篇】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能 使用的CLion版本:2023.3.1 CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

【C++】理解string类的核心理念(实现一个自己的string类)

目录 一、引言 二、自我实现 1.成员变量的读写 2.构造与析构 3.迭代器 4.插入字符或字符串 尾插 中间插入 5.删除字符或子字符串 6.查找字符或子串 7.获取子串 三、补充 一、引言 实现自己的 string 类是学习 C 语言和面向对象编程的一个好方法。通过编写一个简单的…

浅析 ArrayList

ArrayList是一个使用List接口实现的Java类。顾名思义,Java ArrayList提供了动态数组的功能,其中数组的大小不是固定的。它实现了所有可选的列表操作,并允许所有元素,包括null。 ArrayList 继承于 AbstractList ,实现了…

《数据结构、算法与应用C++语言描述》- 最小输者树模板的C++实现

输者树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_31loserTree 输者树:每一个内部节点所记录的都是比赛的输者,晋级的节点记录在边上。本文中,赢者是分数较低的那个,输者是分数高…

虾皮电商申请:一站式开店指南

随着跨境电商的快速发展,越来越多的商家开始意识到东南亚市场的潜力。虾皮电商(Shopee)作为东南亚地区最大的电商平台之一,为商家提供了一个开拓市场的机会。本文将详细介绍如何在虾皮电商平台上开店,并给出一些建议来…

STM32/STM8资源节约主义编程方式

STM32/STM8资源节约主义编程方式 在小资源芯片进行代码设计时,如STM32C0系列,STM8系列,因为官方库本身要包含各种场景应用特征的支持,所以会有一些冗余的代码占用更多FLASH空间。当需要实现资源占用最简化设计方式时,…

uniapp 导入ucharts图表插件 H5项目, 使用echarts eopts配置

先下载ucharts H5示例源码: uCharts: 高性能跨平台图表库,支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序)、Vue、Taro等更多支持canvas的框架平台&#…

如何在公网环境下使用Potplayer访问本地群晖webdav中的影视资源

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是:1 使用环境要求:2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透,映射至公网4 使用固定地址在potplayer访问webdav ​ 国内流媒体平台的内…

硬件基础与实施运维工程师的介绍

目录 一、实施与运维 1.2 实施运维一般做什么 1.1.1实施工程师 1.1.2运维工程师 1.3 实施运维需要具备哪些技能 三、基础硬件 四、操作系统 4.1 Windows 4.2 Linux 4.3 macOS 4.4 Unix 五、总结 一、实施与运维 1.1 实施运维是干什么的 1、运维工程师负责服务的稳…

第二周:AI产品经理全局学习

一、AI产品架构全景 二、 AI产品岗位分析和了解 三、 AI产品能力模型 四、AI产品经理工作流 五、AI产品经理学习路径和规划 六、本周市场动态

力扣 面试经典150算法题

1合并两个有序数组88. 合并两个有序数组-CSDN博客简单23

如何在Ubuntu系统中安装VNC并结合内网穿透实现远程访问桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…