{"id":15030146,"url":"https://github.com/didi/dokit","last_synced_at":"2025-05-13T17:06:04.697Z","repository":{"id":37364816,"uuid":"144705602","full_name":"didi/DoKit","owner":"didi","description":"一款面向泛前端产品研发全生命周期的效率平台。","archived":false,"fork":false,"pushed_at":"2025-02-06T03:42:43.000Z","size":58615,"stargazers_count":20302,"open_issues_count":269,"forks_count":3153,"subscribers_count":394,"default_branch":"master","last_synced_at":"2025-04-18T09:46:37.242Z","etag":null,"topics":["android","ios","miniapp","mockgps","monitoring","performance","tools"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/didi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-14T10:32:07.000Z","updated_at":"2025-04-18T08:57:35.000Z","dependencies_parsed_at":"2023-02-08T08:31:15.383Z","dependency_job_id":"def6a58b-0903-4184-8f8e-0f327550ef6c","html_url":"https://github.com/didi/DoKit","commit_stats":{"total_commits":1875,"total_committers":151,"mean_commits":"12.417218543046358","dds":0.752,"last_synced_commit":"166a1a92c6fd509f6b0ae3e8dd9993f631b05709"},"previous_names":["didi/doraemonkit"],"tags_count":77,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FDoKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FDoKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FDoKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FDoKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/didi","download_url":"https://codeload.github.com/didi/DoKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250477812,"owners_count":21437049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ios","miniapp","mockgps","monitoring","performance","tools"],"created_at":"2024-09-24T20:12:34.180Z","updated_at":"2025-04-23T17:11:04.655Z","avatar_url":"https://github.com/didi.png","language":"Java","readme":"- [简介](#简介)\n- [领域生态](#领域生态)\n- [使用手册](#使用手册)\n- [更新日志](#更新日志)\n- [社区活动](#社区活动)\n- [开发背景](#开发背景)\n- [功能模块](#功能模块)\n  - [一、平台工具(www.dokit.cn)](#一平台工具wwwdokitcn)\n  - [二、常用工具](#二常用工具)\n  - [三、性能检测](#三性能检测)\n  - [四、视觉工具](#四视觉工具)\n  - [五、Weex专项工具（CML专项工具）](#五weex专项工具cml专项工具)\n  - [六、支持自定义的业务工具集成到面板中](#六支持自定义的业务工具集成到面板中)\n  - [七、微信小程序专项工具](#七微信小程序专项工具)\n- [相关文档](#相关文档)\n- [微信交流群(一群满员，已开二群)](#一群满员，已开二群)\n- [QQ 交流群](#qq-交流群)\n- [微信公众号](#微信公众号)\n- [项目成员](#项目成员)\n- [使用提醒](#使用提醒)\n- [友情链接](#友情链接)\n- [协议](#协议)\n\n## 简介\n\u003cdiv align=\"center\"\u003e    \n \u003cimg src=\"https://pt-starimg.didistatic.com/static/starimg/img/J0WO7tUi9U1616143930629.png\" width = \"250\"  alt=\"DoraemonKit\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/github/license/didi/DoraemonKit.svg\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/badge/Android-3.5.0-blue.svg\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/badge/iOS-3.0.7-yellow.svg\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/badge/Flutter-0.6.0-blue.svg\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/badge/miniapp-0.0.1-red.svg\" align=left /\u003e\n \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" align=left /\u003e\n\u003c/div\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\nDoKit诞生于滴滴城运服体验技术部，是一款面向泛前端产品研发全生命周期的效率平台。经过两年的发展，当前DoKit已经发展成了一个相对完整的生态，比如DoKit For Android、DoKit For iOS、DoKit For 小程序、DoKit For Flutter、DoKit For Web。同时我们的项目被BAT以及滴滴、字节、快手、京东等等头部独角兽企业广泛使用并获得良好的口碑。随着dokit.cn平台端的推出，标志着DoKit已经从单纯的效率工具正式进入了效率工具平台的阶段。与此同时我们一直都未停下持续探索的精神，积极地在更多平台领域进行尝试，不给自己设限。我们相信DoKit的未来充满无限可能。\n\n\u003e [English Readme](README_EN.md)\n\n## 领域生态\n\n\u003cdiv align=\"center\"\u003e    \n  \u003cimg src=\"https://pt-starimg.didistatic.com/static/starimg/img/WRUdiWDsw71626696344680.jpg\" width = \"900\" alt=\"DoKit 首页效果演示\" align=center /\u003e\n\u003c/div\u003e\n\n\n## 使用手册\n访问[DoKit官网](https://www.dokit.cn/)，点击\"[使用中心](http://xingyun.xiaojukeji.com/docs/dokit/#/intro)\"。\n\n**温馨提示：当前DoKit的所有功能都只针对Debug环境，Release环境未经过实际验证，所以请大家严格按照官方文档来集成，也不建议大家在Release环境上使用DoKit的任何功能。如果大家一定要在Release环境上使用，请自行进行充分的测试和验证，DoKit官方将不承担任何责任和损失。** \n## 更新日志\n\n- [Android-ReleaseNotes](http://xingyun.xiaojukeji.com/docs/dokit/#/AndroidReleaseNote)\n- [iOS-ReleaseNotes](Doc/iOS-ReleaseNotes.md)\n- [微信小程序-ReleaseNotes](Doc/miniapp-ReleaseNotes.md)\n- [DoKit For Flutter-ReleaseNotes](Flutter/README.md)\n\n## 社区活动\n\n**DoKit调研问卷**\n亲爱的DoKit用户,动动你的小手指参与一下我们的官方调研活动吧。我们极度渴望听到你们的声音:\n\n链接:https://page.juyanwenjuan.com/jy_0CMpJzlu.html\n\n\u003cdiv align=\"center\"\u003e    \n  \u003cimg src=\"https://pt-starimg.didistatic.com/static/starimg/img/INLjGkp9wN1597062733948.jpg\" width = \"250\" alt=\"DoKit 首页效果演示\" align=center /\u003e\n\u003c/div\u003e\n\n\n\n## 开发背景\n\n每一个稍微有点规模的 App，总会自带一些线下的测试功能代码，比如环境切换功能、帧率查看功能等等，这些功能的切换入口往往放在各式各样的入口中，比如一些特殊的手势，双击 statusBar，双击某一个功能区块，或者新建一个 keyWindow 始终至于 App 最上方等等，而且每一个 App 里面的线下附带功能模块很多是相似的，比如帧率查看、内存和 CPU 监控等等，但是现在基本上都是每个 App 都是自己实现了一份，经历了以上的问题之后，DoKit 就有了它存在的意义。\n\nDoKit 是一个功能平台，能够让每一个 App 快速接入一些常用的或者你没有实现的一些辅助开发工具、测试效率工具、视觉辅助工具，而且能够完美在 Doraemon 面板中接入你已经实现的与业务紧密耦合的一些非通有的辅助工具，并搭配我们的[dokit](https://www.dokit.cn)平台，让功能得到延伸，接入方便，便于扩展。\n\n**简单总结**\n\n1、DoKit 能够快速让你的业务测试代码能够在这里统一管理，统一收口；  \n\n2、DoKit 内置很多常用的工具，避免重复实现，一次接入，你将会拥有强大的工具集合；\n\n3、搭配dokit平台，借助[接口Mock](https://www.dokit.cn/#/index/dataMockPage)、[健康体检](https://www.dokit.cn/#/index/checkDataPage)、[文件同步助手](https://www.dokit.cn/#/index/fileSyncPage)、[一机多控]()让你方便和他人协同，极大的提升研发过程中的效率。\n\n\n\n## 功能模块\n\n### 一、平台工具(www.dokit.cn)\n1. **【数据Mock】** App接口Mock解决方案，提供一套基于App网络拦截的接口Mock方案，无需修改代码即可完成对于接口数据的Mock。\n2. **【健康体检】** 一键式操作，整合DoKit多项工具，数据可视化，快速准确定位问题，让你对app的性能了如指掌。\n3. **【文件同步助手】** 通过终端服务，让你的终端空间在平台端完整的展现并提供强大的文件以及数据库操作能力。\n4. **【一机多控】** 主从同步，释放人力，让研发测试效率提升看得见\n\n### 二、常用工具\n\n1. **【App 信息查看】** 快速查看手机信息，App 基础信息、签名相关、权限信息的渠道，避免去手机设置查找或者查看项目源代码的麻烦；\n2. **【开发者选项 Android特有】** 一键跳转开发者选项，避免安卓由于平台差异导致的入口不一致\n3. **【本地语言】** 一键跳转本地语言，避免安卓由于平台差异导致的入口不一致\n4. **【沙盒浏览】** App 内部文件浏览的功能，支持删除和预览, 并且能通过 AirDrop 或者其他分享方式上传到 PC 中，进行更加细致的操作；\n5. **【MockGPS】** App 能定位到全国各地，支持地图地位和手动输入经纬度；\n6. **【H5任意门】** 开发测试同学可以快速输入 H5 页面地址，查看该页面效果；\n7. **【Crash查看】** 方便本地打印出出现 Crash 的堆栈；\n8. **【子线程UI】** 快速定位哪一些 UI 操作在非主线程中进行渲染，避免不必要的问题；（iOS独有）\n9. **【清除本地数据】** 一键删除沙盒中所有数据；\n10. **【NSLog】** 把所有 NSLog 信息打印到UI界面，避免没有开发证书无法调试的尴尬；\n11. **【Lumberjack】** 每一条 CocoaLumberjack 的日志信息，都在在 App 的界面中显示出来，再也不需要导出日志这么麻烦;（iOS独有）\n12. **【DBView】** 通过网页方便快捷的操作应用内数据库，让数据库的调试变得非常优雅;\n13. **【模拟弱网】** 限制网速，模拟弱网环境下App的运行情况;（android独有）\n14. **【JS脚本】** 在指定WebView运行JS脚本。（iOS独有）\n\n### 三、性能检测\n\n1. **【帧率】** App 帧率信息提供波形图查看功能，让帧率监控的趋势更加明显；\n2. **【CPU】** App CPU 使用率信息提供波形图查看功能，让 CPU 监控的趋势更加形象；\n3. **【内存】** App 内存使用量信息提供波形图查看功能，让内存监控的趋势更加鲜明；\n4. **【流量监控】** 拦截 App 内部流量信息，提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情，对流量信息统一拦截，成为我们 App 中自带的 \"Charles\"；\n5. **【卡顿】** 锁定 App 出现卡顿的时刻，打印出对应的代码调用堆栈；\n6. **【大图检测】** 通过流量监测，找出所有的大小超标的图片，避免下载大图造成的流量浪费和渲染大图带来的CPU消耗。\n7. **【启动耗时】** 无侵入的统计出App启动过程的总共耗时；\n8. **【UI层级检查】** 检查出每一个页面中层级最深的元素；\n9. **【函数耗时】** 从函数级别分析app性能瓶颈；\n10. **【Load】** 找出所有的Load方法，并给出耗时分析；（iOS独有）\n11. **【内存泄漏】** 找出App中所有的内存泄漏的问题。\n\n### 四、视觉工具\n\n1. **【颜色吸管】** 方便设计师 UI 捉虫的时候，查看每一个组件的颜色值是否设置正确；\n2. **【组件检查】** 可以抓取任意一个UI控件，查看它们的详细信息，包括控件名称、控件位置、背景色、字体颜色、字体大小；\n3. **【对齐标尺】** 参考 Android 系统自带测试工具，能够实时捕获屏幕坐标，并且可以查看组件是否对齐；\n4. **【元素边框线】** 绘制出每一个 UI 组件的边框，对于组件布局有一定的参考意义。\n\n### 五、Weex专项工具（CML专项工具）\n\n1. **【console日志查看】** 方便在端上查看每一个Weex文件中的console日志，提供分级和搜索功能；\n2. **【storage缓存查看】** 将Weex中的storage模块的本地缓存数据可视化展示；\n3. **【容器信息】** 查看每一个打开的Weex页面的基本信息和性能数据；\n4. **【DevTool】** 快速开启Weex DevTool的扫码入口。\n\ntips ： 如果使用我们滴滴优秀的开源跨端方案 [chameleon](https://github.com/didi/chameleon) 也可以集成该工具集合\n\n### 六、支持自定义的业务工具集成到面板中\n\n统一维护和管理所有的测试模块，详见接入手册\n\n### 七、微信小程序专项工具\n\n详见 [Doraemon mini program debugger](https://github.com/didi/DoraemonKit/tree/master/miniapp)\n\n\n\n## 相关文档\n- [iOS 研发助手 DoKit 技术实现（一）](https://www.jianshu.com/p/00763123dbc4)\n- [iOS 研发助手 DoKit 技术实现（二）](https://blog.csdn.net/weixin_33847182/article/details/91472599)\n- [DoKit支持iOS本地crash查看功能](https://juejin.im/post/5d76184ce51d4561d106cc65)\n- [开源组件 DoKit 之 Android 版本技术实现（一）](https://blog.csdn.net/weixin_33711647/article/details/88004429)\n- [开源组件 DoKit 之 Android 版本技术实现（二）](https://blog.csdn.net/weixin_34148456/article/details/88004414)\n- [DoKit支持Activity启动耗时统计方案](https://juejin.im/post/5d70bc3051882571ed61e407)\n- [DoKit 微信小程序SDK对外发布](https://juejin.im/post/5d9bf252518825095c3c5e32)\n- [滴滴DoKit2.0 - 泛前端开发者的百宝箱](https://juejin.im/post/5dc3cdfa51882538d22d5948)\n- [滴滴正式发布开源客户端研发助手 DoKit 3.0，新特性解读](https://juejin.im/post/5e818e29f265da4804697d25)\n- [滴滴DoKit Android核心原理揭秘之函数耗时](https://juejin.im/post/5eba5ce15188256d6f268c98)\n- [滴滴DoKit Android核心原理揭秘之AOP字节码实现](https://juejin.im/post/6891887877613944840)\n\n\n\n## QQ 技术交流群\n\n\u003cdiv align=\"center\"\u003e    \n \u003cimg src=\"https://dpubstatic.udache.com/static/dpubimg/z73LRuuFdxTmFLJq8c2qt_WechatIMG483.jpeg\" width = \"225\" height = \"400\" alt=\"QQ 交流群\" align=left /\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\n## 项目成员\n\n**创始人**\n[yixiangboy(易翔)](https://github.com/yixiangboy)\n**负责人**\n[小枫](https://github.com/bbssyyuui) \n\n**内部核心成员**\n[小枫](https://github.com/bbssyyuui) 、\n[ChasonTang](https://github.com/ChasonTang) 、\n[AdamCaoQAQ](https://github.com/AdamCaoQAQ) 、\n[fangyeqing123](https://github.com/fangyeqing123) 、\n[RealOnlyone](https://github.com/RealOnlyone) 、\n[HeyCFarmer](https://github.com/HeyCFarmer) 、\n[yFeii](https://github.com/yFeii) 、\n[卡布达](https://github.com/kabda) 、\n[maxiee](https://github.com/maxiee) 、\n[zhugeafanti](https://github.com/zhugeafanti)\n\n**贡献者榜单**\n[yixiangboy(易翔)](https://github.com/yixiangboy)、\n[jtsky(金台)](https://github.com/jtsky) 、\n[LinJZong](https://github.com/LinJZong) 、\n[wanglikun7342](https://github.com/wanglikun7342) 、\n[jayconscious](https://github.com/jayconscious) 、\n[jellybean](https://github.com/excitedhaha) 、\n[linusflow](https://github.com/xu984386604) 、\n[wangzhipeng](https://github.com/WangLao100)、\n[BzCoder](https://github.com/BzCoder) 、 \n[changzuozhen](https://github.com/changzuozhen)、\n[momoxiangbei](https://github.com/momoxiangbei)、\n[wenquanlebao](https://github.com/wenquanlebao) 、 \n[hiXgb](https://github.com/hiXgb) 、 \n[Chinnko](https://github.com/Chinnko) 、 \n[y644938647](https://github.com/y644938647) 、\n[wm219](https://github.com/wm219)、 \n[goolong](https://github.com/goolong) 、\n[miracle9312](https://github.com/miracle9312) 、\n[lwhsgz123](https://github.com/lwhsgz123)、\n[huakucha](https://github.com/huakucha) 、\n[HuginChen](https://github.com/HuginChen) 、\n[feng562925462](https://github.com/feng562925462) 、\n[azhon](https://github.com/azhon) 、\n[rex26](https://github.com/rex26) 、\n[csc-EricWu](https://github.com/csc-EricWu) 、\n[xiandanin](https://github.com/xiandanin) 、\n[0xd-cc](https://github.com/0xd-cc) 、\n[k373379320](https://github.com/k373379320) 、\n[fabcz](https://github.com/fabcz) 、\n[y500](https://github.com/y500) 、\n[Knight-ZXW](https://github.com/Knight-ZXW) 、\n[boai](https://github.com/boai) 、\n[klone1127](https://github.com/klone1127) 、\n[DeveloperLY](https://github.com/DeveloperLY) 、\n[sagdragon](https://github.com/sagdragon) 、\n[ccworld1000](https://github.com/ccworld1000) 、\n[HDB-Li](https://github.com/HDB-Li)、\n[yu-jianfeng](https://github.com/yu-jianfeng)、\n[ydlsl](https://github.com/ydlsl)\n\n如何成为外部贡献者？ 提交有意义的PR，并被采纳。\n\n\n## 使用提醒\n因为SDK目前会配合[dokit.cn](http://www.dokit.cn/)平台, 会产生一些网络数据，这些信息我们收集绝不用于任何恶意用途。\n\n**以下为所有涉及到网络请求的部分**\n\n1. 统计有多少用户集成了dokit\n\n    Android : DoraemonStatisticsUtil#uploadUserInfo\n\n    iOS : DoraemonStatisticsUtil#upLoadUserInfo\n\n2. 统计每个内置kit的使用情况\n\n    Android : DataPickManager#realPost \n\n    iOS : DoraemonBuriedPointManager#uploadData\n\n3. 上传健康体检的相关数据\n\n    Android : AppHealthInfoUtil#post\n\n    iOS : DoraemonHealthManager#upLoadData\n\n4. 数据mock的相关网络请求\n\n    Android : NetWorkMockFragment 里涉及到接口mock的相关网络请求\n    \n    iOS : DoraemonMockManager#queryMockData\u0026uploadSaveData\n\n\n敬请各位用户知晓。\n\n\n\n## 友情链接\n1. [Hummer](https://github.com/didi/Hummer)，Hummer 是一套高性能高可用的跨端开发框架，一套代码可以同时支持开发 Android 和 iOS 应用。现已经支持 Vue/TypeScript/JavaScript 三种语法，面向大前端开发人员，总有一款适合你。\n\n2. [Chameleon]( https://github.com/didi/chameleon)，简写CML，中文意思变色龙，意味着就像变色龙一样能适应不同环境的跨端整体解决方案，达到真正意义上\"一套代码，多端运行\"的终极目标\n   \n3. [Booster](https://github.com/didi/booster) 是一款专门为移动应用设计的易用、轻量级且可扩展的质量优化框架，其目标主要是为了解决随着 APP 复杂度的提升而带来的性能、稳定性、包体积等一系列质量问题。Booster 提供了性能检测、多线程优化、资源索引内联、资源去冗余、资源压缩、系统 Bug 修复等一系列功能模块，可以使得稳定性能够提升 15% ~ 25%，包体积可以减小 1MB ~ 10MB。**同时DoKit插件的底层也是基于Booster进行开发的。**\n\n4. [AoE](https://github.com/didi/AoE)，一个终端侧AI集成运行时环境 \n   \n5. [Mand Mobile](https://github.com/didi/mand-mobile) 一款优秀的面向金融场景的 移动端UI组件库\n   \n\n6. 我们团队的技术公众号【滴滴OrangeLab】，欢迎关注，我们会在这里持续输出团队内部比较有深度的技术沉淀和经验分享，欢迎一起交流。\n\u003cimg src=\"https://pt-starimg.didistatic.com/static/starimg/img/cPlaMme4g81616682162304.jpg\" width = \"250\" /\u003e\n\n## 协议\n\n\u003cimg alt=\"Apache-2.0 license\" src=\"https://www.apache.org/img/ASF20thAnniversary.jpg\" width=\"128\"\u003e\n\nDoKit 基于 Apache-2.0 协议进行分发和使用，更多信息参见 [协议文件](LICENSE)。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2Fdokit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdidi%2Fdokit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2Fdokit/lists"}