字节跳动正式开源其 Flutter 调试工具 UME

简介: 7 月 21 日,字节跳动正式在 GitHub 开源了他们的 Flutter 应用内调试工具 UME。UME 工具的目的是在脱离 Flutter IDE 与 DevTools 的情况下,为开发者提供应用内的调试能力。

作者:郭蕾
在字节跳动,UME 内部版已打磨了近一年时间,服务了近二十个 App,众多插件功能广受开发者好评。本次发布的开源版 UME 提供了 10 个不同功能的调试插件,覆盖 UI 检查、性能工具、代码查看、日志查看等众多功能。

Pub 地址:https://pub.dev/packages/flutter_ume
GitHub 地址:https://github.com/bytedance/flutter_ume

为了进一步了解 UME 相关的信息,InfoQ 采访了字节跳动 Flutter Infra 团队软件工程师赵瑞。以下为具体内容。

InfoQ:当时你们为什么要考虑研发 UME?具体是想解决哪些问题呢?

赵瑞:决定开发 UME 的时候还是在 2020 年的夏天,西瓜视频有数十个业务使用了 Flutter 进行构建,工程师吐槽较多的一个问题就是 Flutter App 的研发工具并不完善,像 iOS 上的 FLEX、Android 上的 Hyperion,这类工具在 Flutter 的领域完全是空白的。

我们对内部的开发者也进行了一些调研,他们遇到的一些问题,比如脱离了计算机无法对 Flutter 应用进行调试;内部分发的测试包,需要一些必要的调试工具,以便产品经理、设计师进行需求验收;Flutter 应用的网络请求不像 Native 应用一样容易抓包。这些问题都指向了同一个需求:Flutter 需要一系列能在应用内实现调试能力的工具。当时我们基础技术的同学一拍即合,决心投入人力开发这样一款工具。

InfoQ:根据你的了解,行业内其他公司有做类似 UME 这样的工具吗?

赵瑞:社区里面之前是没有的,在 UME 上线了几个月后发现社区里有些原本只有 Native 版本的调试工具推出了 Flutter 的版本。我们也很欣慰,这一现象说明不只我们的业务有这种需求。

InfoQ:UME 的设计理念是?

赵瑞:与其说 UME 是一个调试工具,不如说是调试工具平台。强调“平台”,是想告诉大家,UME 允许用户自行开发插件并集成进平台。

UME 框架本身是一个去中心化的 Flutter package,提供了基础的插件管理能力、通用的插件 UI 容器、通用的 VM Service 访问接口等。我们本次发布的开源版 10 个插件都是互相独立、没有耦合的包,用户可以根据自己的需求,选择性接入所需插件,甚至基于 UME 自行开发适合业务的插件。

在字节跳动内部,就有一些业务基于 UME 开发了各种实用工具与插件,如“视频的 videoID 查看插件”、“登录信息查看工具”、“测试环境切换工具”等。

接下来也会开放插件的通用协议,允许插件基于协议通信,实现插件之间互相调用的能力,敬请期待。

InfoQ:现在你们团队大概有几个人开发或者维护 UME?大概有哪些业务使用?支持哪些版本的 Flutter?

赵瑞:目前 UME 由字节跳动 Flutter Infra 团队维护,诸多能力是由团队中负责不同方向的同学一起攻坚出来的成果。截至目前,公司内部有近 20 个业务接入了 UME,除了大家耳熟能详的产品之外,很多新业务也接入了 UME,并且开发者反馈较好,新特性也在持续迭代中。

本次开源的 UME 支持 1.12 至 2.2 版本的 Flutter,几乎覆盖了所有主流的 Flutter 版本。这几天支持空安全特性的版本也发布了,能够在 2.x 版本中开启健全的空安全特性。

InfoQ:我看到官方说明里,你们内部用的,和开源的版本不是一套?未来会统一吗?

赵瑞:内部版本和开源版本在结构上、理念上是一致的,框架主体的代码是完全复用的,但插件的数量、插件的实现会有一定的差异。这里主要原因是内部版很多功能依赖了引擎的改动,其中一些特性涉及的改动又很大,难以合入官方的仓库中,因此暂时无法拿出来贡献到社区中。

比如说内部版允许通过自定义标记,在 Release 模式下选择接入或剥离 UME,这就依赖了 Conditional import 特性;网络请求的插桩收集与 Mock,依赖了自定义 Transformer。

未来会保持内部版和开源版的同步迭代;对于一些内部版独有的功能我们也会考虑通过解除引擎耦合、寻找替代组件、引擎改动合入官方仓库等方案,将这些内部版功能带给社区,打造更强大的开源版本。

InfoQ:接下来这个开源项目有什么中长期计划吗?

赵瑞:主要是三个方向,首先会保持并提升开源项目的品质,尽量保持对 Flutter 版本的较大范围兼容;第二加强与社区的交流与合作共建,集思广益为 UME 增加更多实用功能;第三将 UME 内部版的独有功能,努力带给社区,为 Flutter 的生态添砖加瓦。

字节跳动资深软件工程师王凯曾经在 GMTC 详细分享过他们内部的 Flutter 高可用建设体系,如果你想看他的 Slides 的话,可以在视频号给我私信,我单独发你。

目录
相关文章
|
7天前
|
开发框架 前端开发 定位技术
Flutter框架中的插件市场及开源资源的利用方法。内容涵盖插件市场的扩展功能、时间节省与质量保证
本文深入探讨了Flutter框架中的插件市场及开源资源的利用方法。内容涵盖插件市场的扩展功能、时间节省与质量保证,常见插件市场的介绍,选择合适插件的策略,以及开源资源的利用价值与注意事项。通过案例分析和对社区影响的讨论,展示了这些资源如何促进开发效率和技术进步,并展望了未来的发展趋势。
24 11
|
6月前
|
设计模式 缓存 Dart
Flutter学习笔记&学习资料推荐,15分钟的字节跳动视频面试
Flutter学习笔记&学习资料推荐,15分钟的字节跳动视频面试
|
4月前
|
敏捷开发 前端开发 程序员
Hugeicons Flutter 图标库 | 4000+ 开源免费
在全栈开发的征途中,设计素材的匮乏往往是程序员的一大挑战,尤其是那些为MVP产品增添魅力的元素,比如图标(icons)。 一个优秀的免费图标库,对于快速搭建原型、优化视觉效果至关重要。今天,让我们聚焦于Flutter开发者的一个福音——Hugeicons图标库,它蕴藏着超过4000枚精心设计的图标,为你的应用程序注入无限创意潜力。
119 0
Hugeicons Flutter 图标库 | 4000+ 开源免费
|
6月前
|
SQL 前端开发 JavaScript
IDM 平替 Gopeed Flutter 开源免费下载工具
IDM 替代品 Gopeed 是一个开源免费的 Flutter 下载工具,支持 HTTP、BitTorrent、Magnet 等协议。项目采用 getx 进行构建,已获得 13k Star。功能包括多平台下载、自定义下载目录和并发数、代理设置等。它还拥有浏览器扩展和各种下载插件。开发者可以参考代码学习 Flutter 和 getx。项目源码可在 GitHub 上找到,同时提供了编译和配置指南。Gopeed 是一个值得尝试的现代化下载工具,适用于 Flutter 开发者和用户。
208 4
IDM 平替 Gopeed Flutter 开源免费下载工具
|
6月前
|
开发框架 前端开发 定位技术
【Flutter 前端技术开发专栏】Flutter 中的插件市场与开源资源利用
【4月更文挑战第30天】Flutter插件市场和开源资源加速开发进程。pub.dev是官方插件库,提供大量第三方插件,节约时间和保证质量。选择插件时关注功能需求、评价及维护状况。开源资源作为学习、解决问题和创新的平台,需注意版权、代码质量和兼容性。案例分析展示插件应用,开源社区促进交流与技术进步,未来市场将持续发展。善用资源,提升开发效率与项目竞争力。
165 0
【Flutter 前端技术开发专栏】Flutter 中的插件市场与开源资源利用
|
6月前
|
XML Dart Java
Flutter插件开发之APK自动安装,字节跳动Android岗面试题
Flutter插件开发之APK自动安装,字节跳动Android岗面试题
|
6月前
|
Dart 数据处理 开发者
【Flutter前端技术开发专栏】Flutter是谷歌的开源移动框架,以其高性能和跨平台能力受开发者青睐。
【4月更文挑战第30天】Flutter是谷歌的开源移动框架,以其高性能和跨平台能力受开发者青睐。本文聚焦Flutter开发关键知识点:1) Dart语言和Flutter框架基础,如Widget和State;2) 路由管理,包括基本和命名路由,以及路由传值;3) 使用http、dio等库进行网络请求和数据处理;4) ThemeData定义应用主题,实现样式主题化。掌握这些技能将提升Flutter开发效率和应用质量。
65 0
|
缓存 Dart 定位技术
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!(中)
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!
199 0
|
Swift Kotlin
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!(下)
闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter 图片库重磅开源!
169 0
下一篇
无影云桌面