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

2024-06-04 5968阅读

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

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

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

      一、Dokit 简介

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

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

      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=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"]
              }
          }
      }
      

      其中strategy和methodSwitch配置项已经弃用。新的配置开关位于项目根目录下的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 应用开发中取得更高的效率和质量!


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]