Administrator
发布于 2026-08-02 / 23 阅读
0
0

Kotlin Multiplatform 和 Flutter:跨平台开发解决方案

在日新月异的科技世界中,开发者们不断寻求高效的框架和工具来帮助他们构建高质量的应用程序。然而,在众多选择中,重要的是避免过分追求所谓的“最佳方案”,因为这种方法未必总能找到最合适的选择。

每个项目都是独一无二的,都有其特定的需求。本文旨在帮助您理清思路,更好地了解哪种技术(例如 Kotlin Multiplatform 或 Flutter)最适合您的项目,从而做出明智的决策。

跨平台开发:现代应用程序构建的统一方法

跨平台开发提供了一种使用单一代码库构建跨多个平台应用程序的方法,从而无需为每个系统重写相同的功能。虽然它通常与移动开发(同时面向 Android 和 iOS)联系在一起,但这种方法的应用范围远不止于移动端,它还涵盖 Web、桌面甚至服务器端环境。

其核心理念是在确保必要时仍能实现平台特定功能的同时,最大限度地提高代码复用率,从而简化开发流程并减少维护工作量。团队可以加快开发周期、降低成本并确保跨平台的一致性,这使得跨平台开发成为当今日益多元化的应用环境中的明智之选。

Kotlin 多平台和 Flutter:简化跨平台开发

Flutter 和 Kotlin Multiplatform 是两种流行的跨平台技术,可以简化跨不同平台的应用程序开发。

Flutter

Flutter是一个开源框架,用于从单一代码库构建原生编译的多平台应用程序。它允许您从单一共享的应用程序代码库创建跨 Android、iOS、Web、桌面(Windows、macOS、Linux)和嵌入式系统的丰富应用体验。Flutter 应用程序使用 Dart 编程语言编写。Flutter 由 Google 提供支持和使用。

Flutter 1.0于 2014 年首次以 Sky 的名称推出,并于 2018 年 12 月在 Flutter Live 大会上正式发布。

Flutter 开发者社区规模庞大且非常活跃,持续提供改进和支持。Flutter 允许使用 Flutter 和 Dart 生态系统内开发者贡献的共享软件包。

Kotlin 多平台

Kotlin Multiplatform (KMP) 是由 JetBrains 开发的开源技术,它允许开发人员为 Android、iOS、Web、桌面(Windows、macOS、Linux)和服务器端创建应用程序,使他们能够在这些平台上高效地重用 Kotlin 代码,同时保留原生编程的优势。

使用 Kotlin Multiplatform,您有多种选择:您可以共享除应用程序入口点之外的所有代码,共享单个逻辑(例如网络或数据库模块),或者共享业务逻辑,同时保持 UI 的原生性。

Kotlin Multiplatform 是一种可以重用高达 100% 代码的技术。

Kotlin Multiplatform 于 2017 年作为 Kotlin 1.2 的一部分首次推出。2023 年 11 月,Kotlin Multiplatform 正式稳定。在 2024 年 Google I/O 大会上,Google 宣布支持 Kotlin Multiplatform,用于在 Android 和 iOS 之间共享业务逻辑。

如果您想了解更多关于 Kotlin Multiplatform 的总体方向,请查看我们的博客文章《Kotlin Multiplatform 和 Compose Multiplatform 的未来发展方向》。

探索 Kotlin 多平台

组合多平台

您可以使用Compose Multiplatform(JetBrains 开发的现代声明式框架,基于 Kotlin Multiplatform 和 Google 的 Jetpack Compose 构建)在多个平台上编写共享的 UI 代码。

Compose Multiplatform 目前在 iOS、Android 和桌面端运行稳定,在网页端处于 Beta 测试阶段。

探索 Compose 多平台

我们专门撰写的文章概述了Compose Multiplatform 和 Jetpack Compose之间的关系,重点介绍了它们之间的主要区别。

Kotlin 多平台和 Flutter:概述

Kotlin 多平台

Flutter

由……创建

JetBrains

谷歌

语言

Kotlin

镖

灵活性和代码重用

您可以分享代码库的任何部分,包括业务逻辑和/或用户界面,分享比例从 1% 到 100% 不等。

掌控应用程序的每一个像素,创建定制化和自适应设计,所有平台之间实现 100% 代码共享。

软件包、依赖项和生态系统

软件包可从Maven Central和其他存储库获取,包括

klibs.io旨在简化 KMP 库的搜索。

此列表包含一些最流行的 KMP 库和工具。

软件包可从Pub.dev 获取。

构建工具

Gradle(以及用于面向 Apple 设备的应用程序的 Xcode)。

Flutter 命令行工具(底层使用 Gradle 和 Xcode)。

代码共享

Android、iOS、网页、桌面和服务器端。

Android、iOS、网页、桌面和嵌入式设备。

汇编

编译为适用于桌面和 Android 的 JVM 字节码、适用于 Web 的 JavaScript 或 Wasm,以及适用于原生平台的平台特定二进制文件。

调试版本会在虚拟机中运行 Dart 代码。

Release 版本会输出针对原生平台的平台特定二进制文件,以及针对 Web 的 JavaScript/Wasm 文件。

与原生API通信

可以使用expect/actual 声明直接从 Kotlin 代码访问原生 API 。

可以通过平台通道与主机平台进行通信。

UI渲染

Compose Multiplatform可用于跨平台共享 UI,它基于 Google 的 Jetpack Compose,使用 Skia 引擎,兼容 OpenGL、ANGLE(将 OpenGL ES 2 或 3 调用转换为原生 API)、Vulkan 和 Metal。

Flutter 小部件使用自定义的Impeller 引擎在屏幕上渲染,该引擎根据平台和设备的不同,使用 Metal、Vulkan 或 OpenGL 直接与 GPU 通信。

UI开发迭代

即使从通用代码中也可以获得 UI 预览。

使用Compose 热重载,您可以立即看到 UI 更改,而无需重新启动应用程序或丢失其状态。

VS Code 和 Android Studio 都有相应的 IDE 插件。

使用这项技术的公司

福布斯、Todoist、麦当劳、Google Workspace、飞利浦、9gag、百度、Autodesk、TouchLab、Instabee等公司都在我们的KMP 案例研究中列出。

小米、Wolt、环球影城、阿里巴巴集团、字节跳动、Geico、eBay Motors、Google Pay、So Vegan等公司都已列入Flutter Showcase 名单。

探索全球企业利用 Kotlin Multiplatform 进行跨平台开发的真实用例。

您还可以查看 Google 的博客文章《让开发者更容易进行跨平台开发》,其中提供了有关为您的项目选择合适的技术栈的指导。

如果您想进一步比较 Kotlin Multiplatform 和 Flutter,还可以观看Philipp Lackner 制作的KMP vs. Flutter 视频。在视频中,他分享了关于这两种技术的一些有趣见解,包括代码共享、UI 渲染、性能以及它们的未来发展方向。

通过仔细评估您的具体业务需求、目标和任务,您可以确定最符合您要求的跨平台解决方案。

翻译来源:https://kotlinlang.org/docs/multiplatform/kotlin-multiplatform-flutter.html?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fkotlin-multiplatform%23article-https%3A%2F%2Fwww.jetbrains.com%2Fhelp%2Fkotlin-multiplatform-dev%2Fmultiplatform-reasons-to-try.html#kotlin-multiplatform-and-flutter-an-overview


评论