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

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

  • [一、Dokit 简介](#一、Dokit 简介)
  • [二、Dokit 功能](#二、Dokit 功能)
  • [三、Dokit 使用](#三、Dokit 使用)
    • [3.1 DoKit Android 最新版本](#3.1 DoKit Android 最新版本)
    • [3.2 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及以后的Androidx debugImplementation "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 support debugImplementation "com.didichuxing.doraemonkit:${aarName}:3.3.5" support放弃更新,请大家尽快升级和适配Androidx

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

groovy 复制代码
//核心模块
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 依赖
groovy 复制代码
dependencies {
    ...
    debugImplementation 'io.github.didi.dokit:dokitx:${lastversion}'
    releaseImplementation 'io.github.didi.dokit:dokitx-no-op:${lastversion}'
    ...
}
  1. 初始化

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

Java 复制代码
@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。

groovy 复制代码
buildscript {
    dependencies {
        ...
        classpath 'io.github.didi.dokit:dokitx-plugin:${lastversion}'
        ...
    }
}

在 app 的 build.gradle 中添加 plugin。

groovy 复制代码
apply plugin: 'com.didi.dokit'

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

groovy 复制代码
dokitExt {
    //通用设置
    comm {
        //地图经纬度开关
        gpsSwitch true
        //网络开关
        networkSwitch true
        //大图开关
        bigImgSwitch true
        //webView js 抓包
        webViewSwitch true
    }

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

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

具体的配置如下所示:

groovy 复制代码
# 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 应用开发中取得更高的效率和质量!

相关推荐
萌面小侠Plus4 分钟前
Android笔记(三十三):封装设备性能级别判断工具——低端机还是高端机
android·性能优化·kotlin·工具类·低端机
慢慢成长的码农4 分钟前
Android Profiler 内存分析
android
大风起兮云飞扬丶5 分钟前
Android——多线程、线程通信、handler机制
android
L725611 分钟前
Android的Handler
android
清风徐来辽12 分钟前
Android HandlerThread 基础
android
非著名程序员1 小时前
腾讯为什么支持开源?
开源
CSDN云计算1 小时前
如何以开源加速AI企业落地,红帽带来新解法
人工智能·开源·openshift·红帽·instructlab
HerayChen1 小时前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
顾北川_野1 小时前
Android 手机设备的OEM-unlock解锁 和 adb push文件
android·java
hairenjing11231 小时前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机