TikTok 通过 Jetpack Compose 将代码大小减少 58%,并提升了新功能的 app 性能

TikTok 是一个全球性的短视频平台,以其庞大的用户群和创新功能而闻名。团队不断为用户推出更新、实验和新功能。面对在管理技术债务的同时保持开发速度的挑战,TikTok Android 团队转向了 Jetpack Compose。

团队希望实现产品需求更快、更高质量的迭代。通过利用 Compose,团队试图通过编写更少的代码和减少认知负担来提高工程效率,同时实现更好的性能和稳定性。

简化复杂 UI 以加速开发者生产力

TikTok 页面通常比看起来更复杂,包含许多层级的条件要求。这种复杂性常常导致难以维护、结构欠佳的 View 层级和过多的 View 嵌套,由于测量次数的增加而造成性能下降。

Compose 为这个问题提供了一个直接的解决方案。

此外,Compose 的测量策略有助于减少重复测量开销,使测量性能更容易优化。

为提高开发效率,TikTok 的核心设计系统团队为负责不同应用功能的团队提供组件库。该团队观察到,在 Compose 中进行开发非常简单;利用小型可组合组件非常有效,而整合具有条件逻辑的大型 UI 模块既直接又具有极小的开销。

通过战略迁移建设前进之路

通过策略性地采用 Jetpack Compose,TikTok 能够有效管理技术债务,同时继续专注于为用户提供卓越体验。Compose 在处理条件逻辑方面的能力以及简化组合流程,使团队能够在新页面或完全重写的页面上实现高达 78%的页面加载时间减少。这一改进在小规模情况下提升了 20-30%,在完全重写和新功能中提升了 70-80%。与使用 Views 构建的相同功能相比,他们还成功将代码大小减少了 58%。团队进一步分享了一些学习心得:

TikTok 团队的整体策略是逐步迁移特定的用户旅程。这为他们提供了迁移、确认可衡量的效益,然后扩展到更多界面的机会。他们最初使用 Compose 简化二维码功能的整体结构,并看到了改进效果。后来,团队将迁移扩展到了登录和注册体验。

团队分享了一些额外的学习心得:

在迁移过程中检查性能时,TikTok 团队发现使用许多小 ComposeView 来替换 ViewHolder 内部元素会导致组合开销。他们通过将迁移扩展到使用单个 ComposeView 替换整个 ViewHolder,取得了更好的效果。

当在 ViewPager 中迁移一个具有自定义高度逻辑和基于实验条件隐藏和显示 UI 的逻辑的 Fragment 时,性能并未受到影响。在这种情况下,将 ViewPager 迁移到 Composable 的表现优于迁移到Fragment 。

Jun Shen 非常喜欢 Compose "减少功能开发所需的代码量,提高可测试性,并加速交付"。团队计划稳步提高 Compose 的采用率,使其成为他们长期的首选框架。Jetpack Compose 被证明是一个强大的解决方案,能够提升他们的开发者体验和规模化生产指标。

相关推荐
毕设源码-钟学长9 小时前
【开题答辩全过程】以 基于Android的充电宝租赁管理软件的设计与实现为例,包含答辩的问题和答案
android
Be for thing9 小时前
Android 蓝牙 & WiFi 硬件原理 + 功耗与异常定位实战(手机 / 手表 / IoT 通用)
android·物联网·学习
00后程序员张9 小时前
使用克魔助手(Keymob)查看 iOS 设备日志与崩溃报告
android·macos·ios·小程序·uni-app·cocoa·iphone
__Yvan10 小时前
解决ConstraintLayout中LinearLayout显示异常问题
android·xml·约束布局
mjhcsp10 小时前
C++ A* 算法:启发式路径搜索的黄金标准
android·c++·算法
2501_9159184110 小时前
通过IPA 结构调整和资源指纹变化来处理 iOS 应用相似度问题
android·ios·小程序·https·uni-app·iphone·webview
火山上的企鹅10 小时前
Qt/QGroundControl 实战:接入 Skydroid(云卓) G20 遥控器 Android SDK 并实时显示摇杆与信号质量
android·开发语言·qt·qgroundcontrol·云卓sdk
Be for thing10 小时前
Android 屏幕硬件原理 + 显示驱动与功耗优化实战(手机 / 手表通用)
android·学习·智能手机
冰语竹10 小时前
滚动视图HorizontalScrollView和ScrollView
android