它来了!Flutter|它来了!Flutter 应用内调试工具 UME 开源啦
文章图片
作者:字节跳动终端技术 —— 赵瑞
先说重点
- Pub 地址:https://pub.dev/packages/flut...
- GitHub 地址:https://github.com/bytedance/...
UME 是由字节跳动 Flutter Infra 团队出品的 Flutter 应用内调试工具,目的是在脱离 Flutter IDE 与 DevTools 的情况下,提供应用内的调试功能。
【它来了!Flutter|它来了!Flutter 应用内调试工具 UME 开源啦】在字节跳动,UME 内部版已打磨了近一年时间,服务了近二十个 App,众多插件功能广受开发者好评。本次发布的开源版 UME 提供了 10 个不同功能的调试插件,覆盖 UI 检查、性能工具、代码查看、日志查看等众多功能。无论是设计师、产品经理、研发工程师或质量工程师,都能直接从应用内获取有用信息,从而提升整个团队的研发、调试与验收效率。
功能介绍 UI 插件包
文章图片 |
文章图片 |
文章图片 |
文章图片 |
代码查看
文章图片
代码查看插件,默认基于
WidgetInspectorService
提取 creationLocation
, 拿到当前页面的 library,再通过 VM Service 获取对应代码内容。允许用户输入关键字,通过遍历
scriptList
对 library 进行模糊匹配,实现对任意代码内容的查看能力。日志展示
文章图片
通过重定向 foundation 包中的 debugPrint,实现对日志输出函数的插桩处理,并记录日志输出时间等额外信息,通过统一面板提供筛选、导出等功能。
性能插件包
文章图片 |
文章图片 |
设备信息插件包
文章图片 |
文章图片 |
开发自定义插件 除了上述的 UME 内置插件外,开发者可以基于 UME 提供的统一插件管理与基础服务,开发适合自己业务的插件包。
实现方式也非常简单,只需要实现
Pluggable
虚类中的方法,提供插件必要信息即可,代码示例如下图。文章图片
开发者可以参考开源仓库中的
custom_plugin_example
示例,以及 kits
目录下的所有插件包代码,来了解如何实现一个自定义插件包。访问基础服务
为简化插件开发,提高代码复用性,UME 封装了 Inspector、VM Service 等作为基础服务,插件可方便地拓展能力。
文章图片
除此之外,UME 还提供了 FloatingWidget 通用浮窗容器、StoreMixin 存储能力等,供插件使用。
欢迎参与开源贡献与共建 由于很多功能依赖引擎及工具链的改动,因此开源版的 UME 相比于公司内部版本在功能上进行了很多精简。但开发团队也在不断寻求解决方案,避免修改引擎,或将改动合入官方仓库,将更多实用功能引入开源版 UME。
我们鼓励广大开发者,参与到 UME 的开发与生态建设上。比如开发更多实用的插件并贡献给社区,在 GitHub Issues 上提交功能建议、问题反馈,或修复问题并提交 Pull Request。
欢迎各位开发者加入字节跳动 Flutter 技术交流群参与技术交流与讨论。
关于字节终端技术团队 字节跳动终端技术团队(Client Infrastructure)是大前端基础技术的全球化研发团队(分别在北京、上海、杭州、深圳、广州、新加坡和美国山景城设有研发团队),负责整个字节跳动的大前端基础设施建设,提升公司全产品线的性能、稳定性和工程效率;支持的产品包括但不限于抖音、今日头条、西瓜视频、飞书、瓜瓜龙等,在移动端、Web、Desktop等各终端都有深入研究。
就是现在!客户端/前端/服务端/端智能算法/测试开发 面向全球范围招聘!一起来用技术改变世界,感兴趣可以联系邮箱 chenxuwei.cxw@bytedance.com,邮件主题 简历-姓名-求职意向-期望城市-电话。
推荐阅读
- 热闹中的孤独
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 尽力
- 你到家了吗
- 这辈子我们都不要再联系了
- 死结。
- 我从来不做坏事
- 时间老了
- 喂,你结婚我给你随了个红包
- 赢在人生六项精进二阶Day3复盘