Skip to content

采用 Kotlin Multiplatform 的十大理由,助力项目提速

在当今多元化的技术领域,开发者面临着构建能够在各种平台上无缝运行的应用程序的挑战,同时需要优化开发时间并提高用户生产力。Kotlin Multiplatform (KMP) 提供了一种解决方案,使您能够为多个平台创建应用程序,在不同平台间促进代码复用,同时保持原生编程的优势。

在本文中,我们将探讨开发者应在现有或新项目中使用 Kotlin Multiplatform 的十大理由,以及 KMP 为何持续获得大量关注。

为何应在项目中使用 Kotlin Multiplatform

无论您是追求效率提升,还是渴望探索新技术,本文都将阐释 Kotlin Multiplatform 带来的诸多实际益处,包括其简化开发工作、广泛的平台支持和强大的工具生态系统等能力,并附有真实公司的案例研究。

1. Kotlin Multiplatform 助您避免代码重复

百度,全球最大的中文搜索引擎,推出了面向年轻受众的应用程序 Wonder App。他们在传统应用程序开发中面临以下问题:

  • 应用程序体验不一致:Android 应用程序与 iOS 应用程序的工作方式不同。
  • 业务逻辑验证成本高昂:iOS 和 Android 开发者使用相同业务逻辑的工作需要独立检测,这导致了高昂的成本。
  • 升级和维护成本高昂:业务逻辑的重复繁琐耗时,这增加了应用程序的升级和维护成本。

百度团队决定尝试使用 Kotlin Multiplatform,首先统一了数据层:数据模型、RESTful API 请求、JSON 数据解析和缓存逻辑。

随后他们决定采用 Model-View-Intent (MVI) 用户界面模式,该模式允许您使用 Kotlin Multiplatform 统一界面逻辑。他们还共享了底层数据、处理逻辑和 UI 处理逻辑。

该尝试结果非常成功,带来了以下收益:

  • Android 和 iOS 应用程序提供了一致的体验。
  • 降低了维护和测试成本。
  • 显著提高了团队内部的生产力。

探索真实世界的 Kotlin Multiplatform 用例

2. Kotlin Multiplatform 支持广泛的平台列表

Kotlin Multiplatform 的主要优势之一是其对各种平台的广泛支持,使其成为开发者多功能的选择。这些平台包括 Android、iOS、桌面、Web(JavaScript 和 WebAssembly)以及服务器(Java 虚拟机)。

Quizlet 是一个通过测验辅助学习和练习的流行教育平台,它为 Kotlin Multiplatform 的优势提供了另一个案例研究。该平台每月约有 5000 万活跃用户,其中 1000 万来自 Android。该应用程序在 Apple App Store 的教育类别中排名前 10 位。

Quizlet 团队尝试了 JavaScript、React Native、C++、Rust 和 Go 等技术,但面临各种挑战,包括性能、稳定性以及跨平台实现差异。最终,他们选择了 Kotlin Multiplatform 用于 Android、iOS 和 Web。以下是使用 KMP 给 Quizlet 团队带来的益处:

  • 编组对象时获得更类型安全的 API。
  • iOS 上的评分算法比 JavaScript 快 25%。
  • Android 应用程序大小从 18 MB 减少到 10 MB。
  • 增强了开发者体验。
  • 团队成员(包括 Android、iOS、后端和 Web 开发者)对编写共享代码的兴趣增加。

探索 Kotlin Multiplatform 提供的全部功能

3. Kotlin 提供简化的代码共享机制

在编程语言领域,Kotlin 以其实用主义方法脱颖而出,这意味着它优先考虑以下特性:

  • 可读性优于简洁性。虽然简洁的代码很有吸引力,但 Kotlin 明白清晰度至关重要。目标不仅仅是缩短代码,更是消除不必要的样板代码,从而提高可读性和可维护性。

  • 代码复用优于纯粹的表达性。它不仅仅是解决许多问题,更是关于识别模式和创建可复用的库。通过利用现有解决方案并提取共同点,Kotlin 使开发者能够最大限度地提高代码效率。

  • 互操作性优于独创性。Kotlin 没有另起炉灶,而是拥抱与 Java 等成熟语言的兼容性。这种互操作性不仅允许与庞大的 Java 生态系统无缝集成,还有助于采用经过验证的实践和从过往经验中汲取的教训。

  • 安全性与工具优于健全性。Kotlin 使开发者能够及早捕获错误,确保您的程序不会进入无效状态。通过在编译期或在 IDE 中编写代码时检测问题,Kotlin 提高了软件可靠性,最大限度地降低了运行时错误的风险。

我们每年都会进行 Kotlin 调查,以帮助我们了解用户对该语言的体验。今年,92% 的受访者表示拥有积极的体验,比一年前的 86% 显著增加。

Kotlin satisfaction rate for 2023 and 2024

关键在于 Kotlin 对可读性、复用性、互操作性和安全性的重视,使其成为开发者一个引人注目的选择,并提高了他们的生产力。

4. Kotlin Multiplatform 实现灵活的多平台开发

借助 Kotlin Multiplatform,开发者不再需要在原生开发和跨平台开发之间做出二选一的决定。他们可以选择共享什么,以及原生编写什么。

在 Kotlin Multiplatform 出现之前,开发者必须原生编写所有内容。

Before Kotlin Multiplatform: writing all code natively

得益于 Compose Multiplatform,Kotlin Multiplatform 允许开发者共享业务逻辑、表示逻辑,甚至 UI 逻辑。

With Kotlin Multiplatform and Compose Multiplatform: developers can share business logic, presentation logic, or even UI logic

现在,除了平台特有的代码外,您可以共享几乎所有内容。

5. 借助 Kotlin Multiplatform 解决方案,您可以共享 UI 代码

JetBrains 提供了 Compose Multiplatform,这是一个基于 Kotlin 和 Jetpack Compose 的声明式框架,用于在多个平台(包括 Android(通过 Jetpack Compose)、iOS、桌面和 Web(Alpha 版))上共享用户界面。

Instabee,一个专门为电子商务企业提供最后一公里物流服务的平台,在其 Android 和 iOS 应用程序中开始使用 Compose Multiplatform 共享 UI 逻辑,当时该技术仍处于 Alpha 阶段。

Compose Multiplatform 有一个官方示例,名为 ImageViewer App,它在 Android、iOS、桌面和 Web 上运行,并集成了地图和相机等原生组件。还有一个社区示例,New York Times App 克隆,它甚至可以在手表上的 Wear OS(智能手表操作系统)上运行。查看此 Kotlin Multiplatform 和 Compose Multiplatform 示例列表以查看更多示例。

探索 Compose Multiplatform

6. 您可在现有和新项目中使用 Kotlin Multiplatform

我们来看以下两种场景:

  • 在现有项目中利用 KMP

    再次以百度的 Wonder App 为例。团队已经拥有 Android 和 iOS 应用程序,他们只是统一了逻辑。他们开始逐步统一更多库和更多逻辑,然后实现了跨平台共享的统一代码库。

  • 在新项目中利用 KMP

    9GAG,一个在线平台和社交媒体网站,尝试了 Flutter 和 React Native 等不同技术,但最终选择了 Kotlin Multiplatform,这使他们能够统一应用程序在两个平台上的行为。他们首先创建了一个 Android 应用程序。然后,他们将 Kotlin Multiplatform 项目作为 iOS 上的依赖项来使用。

7. 借助 Kotlin Multiplatform,您可以逐步共享代码

您可以循序渐进地开始,从常量等简单元素入手,然后逐步迁移电子邮件验证等通用工具。您还可以编写或迁移您的业务逻辑,例如事务处理或用户身份验证。

在 JetBrains,我们经常进行 Kotlin Multiplatform 调查,并询问社区他们在不同平台之间共享了哪些部分的代码。这些调查显示,数据模型、数据序列化、网络、分析和内部工具是这项技术产生重大影响的关键领域。

Parts of code users are able to share between platforms with Kotlin Multiplatform: survey results

8. Kotlin Multiplatform 已被全球公司采用

KMP 已被全球许多大型公司使用,包括 Forbes、Philips、Cash App、Meetup、Autodesk 等等。您可以在案例研究页面阅读他们的所有故事。

2023 年 11 月,JetBrains 宣布 Kotlin Multiplatform 现已 稳定 (Stable),吸引了更多公司和团队对这项技术的兴趣。

9. Kotlin Multiplatform 提供强大的工具支持

使用 Kotlin Multiplatform 项目时,您拥有强大的工具支持。

  • Android Studio。这个集成开发环境 (IDE) 基于 IntelliJ Community Edition 构建,被广泛认为是 Android 开发的行业标准。Android Studio 提供一套全面的特性,用于编码、调试和性能监控。
  • Xcode。Apple 的 IDE 可用于创建 Kotlin Multiplatform 应用程序的 iOS 部分。Xcode 是 iOS 应用程序开发的标准,提供丰富的工具用于编码、调试和配置。然而,Xcode 仅限 Mac 使用。

10. Kotlin Multiplatform 拥有庞大且支持性的社区

Kotlin 和 Kotlin Multiplatform 拥有一个非常支持性的社区。以下是您可以找到任何疑问答案的几个地方。

  • Kotlinlang Slack 工作区。该工作区约有 60,000 名成员,并有几个与跨平台开发相关的频道,例如 #multiplatform#compose#compose-ios
  • Kotlin X。在这里,您将找到快速的专家见解和最新新闻,包括大量多平台技巧。
  • Kotlin YouTube。我们的 YouTube 频道提供实用的教程、专家直播和其他出色的教育内容,适用于视觉学习者。
  • Kotlin Roundup。如果您想及时了解 Kotlin 和 Kotlin Multiplatform 动态生态系统的最新更新,请订阅我们的定期新闻稿!

Kotlin Multiplatform 生态系统正在蓬勃发展。它由全球众多 Kotlin 开发者热情培育。以下是每年创建的 Kotlin Multiplatform 库数量图表:

The number of Kotlin Multiplatform libraries over the years.

如您所见,2021 年出现了明显的增长,此后库的数量持续增加。

为何选择 Kotlin Multiplatform 而非其他跨平台技术?

在选择不同的跨平台解决方案时,权衡它们的优缺点至关重要。以下是 Kotlin Multiplatform 可能适合您的主要原因分析:

  • 出色的工具,易于使用。Kotlin Multiplatform 利用 Kotlin,为开发者提供了出色的工具和易用性。
  • 原生编程。原生编写内容非常简单。得益于预期与实际声明,您可以让您的多平台应用访问平台特有的 API。
  • 卓越的跨平台性能。用 Kotlin 编写的共享代码会编译成针对不同目标平台的多种输出格式:Android 的 Java 字节码和 iOS 的原生二进制文件,确保在所有平台上都具有良好的性能。

如果您已决定尝试 Kotlin Multiplatform,以下是一些帮助您入门的提示:

  • 从小处着手。从小型共享组件或常量开始,让团队熟悉 Kotlin Multiplatform 的工作流程和优势。
  • 制定计划。制定清晰的实验计划,假设预期结果以及实现和分析的方法。明确共享代码的贡献角色,并建立有效分发更改的工作流程。
  • 评估并进行复盘。与您的团队进行一次复盘会议,评估实验的成功与否,并找出任何挑战或需要改进的领域。如果实验成功,您可能希望扩大范围,共享更多代码。如果未能成功,您需要了解此次实验未成功的原因。

查看 Kotlin Multiplatform 的实际应用!立即开始

对于那些希望帮助团队开始使用 Kotlin Multiplatform 的人,我们准备了一份包含实用技巧的详细指南

如您所见,许多大型公司已成功使用 Kotlin Multiplatform 来构建具有原生外观 UI 的高性能跨平台应用程序,有效复用代码,同时保持原生编程的优势。