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

王國慶  金牌会员 | 2024-6-20 00:36:15 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 572|帖子 572|积分 1720

在 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 提供了许多有用的功能,以下是其中一些紧张功能的介绍:

  • 悬浮窗调试工具: Dokit 提供了一个可自定义的悬浮窗,可以在应用运行时表现调试信息,包括布局边界、视图层级、性能指标等。这使得调试 UI 布局和交互变得更加方便。
  • 应用性能监测: Dokit 可以监测应用的性能指标,如 CPU 使用率、内存占用、网络哀求等,并以可视化的方式展示。这有助于开发人员发现性能瓶颈并进行优化。
  • 网络哀求监控: Dokit 可以拦截应用的网络哀求,并展示哀求的详细信息,如哀求 URL、哀求参数、响应数据等。这对于调试和分析网络哀求非常有用。
  • 应用信息查看: Dokit 提供了应用信息查看功能,包括应用版本、设备信息、权限信息等。这有助于相识应用的运行环境和设置。
  • 自定义插件: 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}必要改为指定的名称,参考如下:
  1. //核心模块
  2. debugImplementation "io.github.didi.dokit:dokitx:${lastversion}"
  3. //文件同步模块
  4. debugImplementation "io.github.didi.dokit:dokitx-ft:${lastversion}"
  5. //一机多控模块
  6. debugImplementation "io.github.didi.dokit:dokitx-mc:${lastversion}"
  7. //weex模块
  8. debugImplementation "io.github.didi.dokit:dokitx-weex:${lastversion}"
  9. //no-op 模块
  10. releaseImplementation "io.github.didi.dokit:dokitx-no-op:${lastversion}"
复制代码
debugImplementation 必要根据自己的构建改成对应的productFlavor
下面所有的例子均用dokitx举例。要使用support版本请将dokitx改为dokit即可。 v3.3.5以后的版本必要添加mavenCentral()仓库
3.2 DoKit Android 接入步骤


  • Gradle 依赖
  1. dependencies {
  2.     …
  3.     debugImplementation 'io.github.didi.dokit:dokitx:${lastversion}'
  4.     releaseImplementation 'io.github.didi.dokit:dokitx-no-op:${lastversion}'
  5.     …
  6. }
复制代码

  • 初始化
在 App 启动的时候进行初始化。
  1. @Override
  2. public void onCreate() {
  3.    DoKit.Builder(this)
  4.             .productId("需要使用平台功能的话,需要到dokit.cn平台申请id")
  5.             .build()
  6. }
复制代码

  • 流量监控以及其他AOP功能(可选)
AOP包括以下几个功能:
1)百度、腾讯、高德舆图的经纬度模仿
2)UrlConnection、Okhttp 抓包以及后续的接口hook功能
3)App 启动耗时统计
4)慢函数
5)大图
在项目的 build.gradle 中添加 classpath。
  1. buildscript {
  2.     dependencies {
  3.         …
  4.         classpath 'io.github.didi.dokit:dokitx-plugin:${lastversion}'
  5.         …
  6.     }
  7. }
复制代码
在 app 的 build.gradle 中添加 plugin。
  1. apply plugin: 'com.didi.dokit'
复制代码
插件设置选项: 添加到app module 的build.gradle文件下 与android {}处于同一级
  1. dokitExt {
  2.     //通用设置
  3.     comm {
  4.         //地图经纬度开关
  5.         gpsSwitch true
  6.         //网络开关
  7.         networkSwitch true
  8.         //大图开关
  9.         bigImgSwitch true
  10.         //webView js 抓包
  11.         webViewSwitch true
  12.     }
  13.     slowMethod {
  14.         //调用栈模式配置 对应gradle.properties中DOKIT_METHOD_STRATEGY=0
  15.         stackMethod {
  16.             //默认值为 5ms 小于该值的函数在调用栈中不显示
  17.             thresholdTime 10
  18.             //调用栈函数入口 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的入口 假如不需要可以去掉该字段
  19.             enterMethods = ["com.didichuxing.doraemondemo.MainDebugActivity.test1"]
  20.             //黑名单 粒度最小到类 暂不支持到方法  千万不要用我默认的配置 如果有特殊需求修改成项目中自己的入口 假如不需要可以去掉该字段
  21.             methodBlacklist = ["com.facebook.drawee.backends.pipeline.Fresco"]
  22.         }
  23.         //普通模式配置 对应gradle.properties中DOKIT_METHOD_STRATEGY=1
  24.         normalMethod {
  25.             //默认值为 500ms 小于该值的函数在运行时不会在控制台中被打印
  26.             thresholdTime 500
  27.             //需要针对函数插装的包名 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目包名 假如不需要可以去掉该字段
  28.             packageNames = ["com.didichuxing.doraemondemo"]
  29.             //不需要针对函数插装的包名&类名 千万不要用我默认的配置 如果有特殊需求修改成项目中自己的项目包名 假如不需要可以去掉该字段
  30.             methodBlacklist = ["com.didichuxing.doraemondemo.dokit"]
  31.         }
  32.     }
  33. }
复制代码
其中strategymethodSwitch设置项已经弃用。新的设置开关位于项目根目录下的gradle.properties中。
具体的设置如下所示:
  1. # dokit全局配置
  2. # 插件开关
  3. DOKIT_PLUGIN_SWITCH=true
  4. # DOKIT读取三方库会和booster冲突 如果你的项目中也集成了booster 建议将开关改成false
  5. DOKIT_THIRD_LIB_SWITCH=true
  6. # 插件日志
  7. DOKIT_LOG_SWITCH=true
  8. # 自定义Webview的全限定名 主要是作用于h5 js抓包和数据mock
  9. DOKIT_WEBVIEW_CLASS_NAME=com/didichuxing/doraemonkit/widget/webview/MyWebView
  10. # dokit 慢函数开关
  11. DOKIT_METHOD_SWITCH=true
  12. # dokit 函数调用栈层级
  13. DOKIT_METHOD_STACK_LEVEL=4
  14. # 0:默认模式 打印函数调用栈 需添加指定入口  默认为application onCreate 和attachBaseContext
  15. # 1:普通模式 运行时打印某个函数的耗时 全局业务代码函数插入
  16. DOKIT_METHOD_STRATEGY=0
复制代码
理由: 为了淘汰项目的编译时间,所以慢函数的默认开关为false。再加上plugin的transform注册必须早于project.afterEvaluate。所以无法通过原先的设置项拿到设置信息,只能通过在全局的gradle.properties中的设置可以拿到。
tips: 当修改完DoKit插件的相干设置以后一定要clean一下重新编译才能生效。这是AS的缓存增量编译导致的,暂时没有其他好的解决方案。

  • 自定义功能组件(可选)
    自定义功能组件
四、总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表