Mercari 借助 Jetpack Compose 将界面开发效率提高了 56%
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
Mercari 让数百万人能够购物和销售几乎任何商品。该公司于 2013 年在日本成立,现已成为日本最大的以智能手机为主的 C2C 购物平台。Mercari 的 Client Architect 团队于 2020 年开始使用 Jetpack Compose,目标是使用能够长期扩展的现代解决方案和技术,为新应用构建技术栈。
策略
Mercari 团队需要实现一个在 Android View 上实现复杂状态管理和样式设置的设计系统,这是一项非常复杂的任务。通过使用 Jetpack Compose,他们不仅能够实现这个复杂的系统,还得以减少用于开发每个界面的时间。
Jetpack Compose 还帮助该团队利用设计系统为新应用编写界面代码,使其界面代码简洁且易于理解。因此,该团队可以将更多时间用于编写界面和业务逻辑,例如为深色主题提供实际支持。
此外,Mercari 团队还编写了一个概念验证工具,用于将 Figma 与设计系统集成,该工具会自动根据组件设计生成界面代码。该团队表示,由于 Compose 的声明性,使用 Compose 开发该工具会更轻松。
“一旦 Android 开发者习惯了编写 Jetpack Compose 代码,他们就不想再回来。”- Mercari 的 Android 技术主管 Anthony Allan Conda
成果
在 Jetpack Compose 和新的设计系统之间,Mercari 使用的代码编写界面的量要少得多。在包含可无限滚动内容这种常见用例的屏幕上,他们实际上将代码减少了约 56%。因此,他们得以在相同的时间内编写更多屏幕,让他们有更多时间来编写业务逻辑和代码的其他部分。
此外,开发者还可以利用界面本身执行更多操作,例如添加动画以及使用直观的 API(例如 AnimatedVisibility、Crossfade 和 Animatable)。
Mercari 计划在其新应用中继续使用 Jetpack Compose,直至 Jetpack Compose 发布。他们的设计系统(使用 Jetpack Compose 编写的 Android SDK)还可与 Mercari 中的多个应用配合使用。
开始使用
详细了解 Jetpack Compose。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2021-05-19。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2021-05-19\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2021-05-19。"]]