跨平台移动开发
什么是跨平台移动开发?
如今,许多公司正面临为多个平台(特别是 Android 和 iOS)构建移动应用的挑战。这就是为什么跨平台移动开发解决方案已成为最受欢迎的软件开发趋势之一的原因。
根据最近的应用市场数据,Google Play 商店拥有超过 230 万个应用,Apple App Store 提供约 220 万个应用,Android 和 iOS 继续占据全球移动应用分发和使用的主导地位。
如何创建一个能够触达 Android 和 iOS 受众的移动应用?在本文中,您将了解到为什么越来越多的移动工程师选择跨平台(或多平台)移动开发方法。
跨平台移动开发:定义与解决方案
跨平台移动开发(也称为多平台移动开发)是一种允许团队使用单一共享代码库构建适用于多个平台的应用程序的方法。工程师无需开发和维护两个完全独立的原生应用,而是编写可以在平台间复用的公共代码。
现代跨平台框架允许开发者编写一次大部分应用逻辑,并在 Android 和 iOS 之间共享,从而显著减少重复工作并加速交付。例如,Kotlin Multiplatform 让工程师能够复用其所有的业务逻辑,通过 Compose Multiplatform,甚至可以在平台间复用 UI 代码。
这种高水平的代码共享有助于确保跨平台的一致用户体验,减少重复的开发工作,并降低长期维护成本。同时,现代框架允许开发者在需要时保留对原生 API 和平台特定功能的访问。
通过将代码复用与原生集成相结合,跨平台开发为旨在高效触达 Android 和 iOS 用户的公司提供了一个平衡的解决方案。
移动应用开发的不同方法
在过去的十年中,跨平台解决方案已经发生了显著演变。早期的混合工具(如 Apache Cordova 和 Ionic)实现了基于 Web 的代码在平台间共享,但通常性能有限且用户体验较差。像 Kotlin Multiplatform 和 Flutter 这样现代的编译型框架在提供广泛代码复用的同时,提供了近乎原生的性能,并能更深层次地访问原生平台功能。
为 Android 和 iOS 创建应用主要有以下几种方式:
1. 为每个操作系统开发独立的原生应用
在创建原生应用时,开发者针对特定的操作系统构建应用程序,并依赖专门为一个平台设计的工具和编程语言:Android 使用 Kotlin 或 Java,iOS 使用 Swift 或 Objective-C。
这些工具和语言让您可以访问特定操作系统的功能和能力,并允许您打造具有直观界面的响应式应用。但如果您想触达 Android 和 iOS 受众,则必须创建单独的应用程序,这需要花费大量的时间和精力。
2. 渐进式 Web 应用 (PWA)
渐进式 Web 应用将移动应用的功能与 Web 开发中使用的解决方案相结合。粗略地说,它们提供了网站和移动应用的混合体。开发者使用 JavaScript、HTML、CSS 和 WebAssembly 等 Web 技术构建 PWA。
Web 应用程序不需要单独的打包或分发,可以在线发布。它们可以通过计算机、智能手机和平板电脑上的浏览器访问,不需要通过 Google Play 或 App Store 安装。
这里的缺点是用户在利用应用时无法使用其设备的所有功能(如联系人、日历、电话和其他资产),从而导致用户体验受限。在应用性能方面,原生应用占据领先地位。
3. 跨平台应用
如前所述,多平台应用旨在不同移动平台上的运行效果完全相同。跨平台框架允许您为了开发此类应用而编写可共享和可复用的代码。
这种方法有几个好处,例如在时间和成本方面的高效性。我们将在后面的章节中详细介绍跨平台移动开发的优缺点。
4. 混合应用
在浏览网站和论坛时,您可能会注意到有些人交替使用“跨平台移动开发”和“混合移动开发”这两个术语。然而,这样做并不完全准确。
对于跨平台应用,移动工程师可以编写一次代码,然后在不同平台上复用。另一方面,混合应用开发是一种结合了原生和 Web 技术的方法。它要求您将使用 Web 开发语言(如 HTML、CSS 或 JavaScript)编写的代码嵌入到原生应用中。您可以借助 Ionic Capacitor 和 Apache Cordova 等框架,使用额外的插件来访问平台的原生功能。
跨平台和混合开发之间唯一的相似之处是代码的可共享性。在性能方面,混合应用程序无法与原生应用媲美。因为混合应用部署的是单一代码库,某些功能是针对特定操作系统的,在其他系统上运行效果不佳。
原生或跨平台应用开发:旷日持久的争论
关于原生和跨平台开发的争论在技术社区中仍未解决。这两项技术都在不断演进,并各有利弊。
一些专家仍然更倾向于原生移动开发而非多平台解决方案,认为原生应用更强大的性能和更好的用户体验是最重要的优势。
然而,许多现代企业需要更快速地在 Android 和 iOS 上发布功能。这就是 Kotlin Multiplatform 等跨平台开发技术可以发挥作用的地方。Duolingo 等公司已经见证了其影响力。正如其客户端平台团队的 John Rodriguez 所述:
NOTE
对于 Duolingo 来说,一个令人兴奋的趋势是,我们在内部使用 Kotlin Multiplatform 越多,我们就发现自己在交付速度方面变得越快。事实证明,当你学习了一些东西之后,你就会变得非常擅长它。[…] 现在我们有了更多的信心,并且正在积累这些知识。
跨平台移动开发适合您吗?
选择跨平台开发通常不仅是出于技术原因,也是因为其商业优势。通过在平台间共享代码,团队可以减少重复的开发工作,加速功能交付,并简化长期维护。
跨平台移动开发的好处
企业选择这种方法而非其他选项的原因有很多:
1. 可复用代码
通过跨平台编程,移动工程师无需为每个操作系统编写新代码。使用单一代码库允许开发者减少在重复性任务(如 API 调用、数据存储、数据序列化和分析实现)上花费的时间。
像 Kotlin Multiplatform 这样的技术允许您仅实现一次应用的数据层、业务层和表示层。或者,您可以逐步采用 KMP:选择一段经常变动且通常会发生不同步的逻辑(如筛选或排序),将其设为跨平台,然后将其作为共享模块连接到您的项目中。
在 JetBrains,我们定期进行 Kotlin Multiplatform 调查,并询问我们的社区成员他们在不同平台之间共享代码的哪些部分。

3. 有效的资源管理
拥有单一代码库可帮助团队更有效地管理其资源。团队无需为 Android 和 iOS 维护单独的代码库和开发工作流,而是可以在共享组件上进行协作,专注于构建产品功能,而不是重复工作。
跨平台开发方法的挑战
所有解决方案都有其自身的局限性。技术社区中的一些人认为跨平台编程仍然在处理性能问题。此外,项目负责人可能会担心他们对优化开发过程的关注可能会对应用的用户体验产生负面影响。
然而,随着底层技术的改进,跨平台解决方案正变得越来越稳定、适应性强且灵活。
另一个经常被提及的担忧是,多平台开发无法无缝支持平台的原生功能。然而,使用 Kotlin Multiplatform,您可以使用 Kotlin 的预期声明和实际声明来允许您的多平台应用访问平台特定的 API。预期声明和实际声明允许您在公共代码中定义您“预期”能够在多个平台调用相同的函数,并提供“实际”实现,由于 Kotlin 与 Java 和 Objective-C/Swift 的互操作性,这些实现可以与任何平台特定的库进行交互。
随着现代多平台框架的不断演进,它们越来越多地允许移动工程师打造类原生的体验。如果一个应用程序编写得很好,用户将无法察觉到差异。然而,您的产品质量将很大程度上取决于您选择的跨平台应用开发工具。
跨平台框架对比
有几种框架允许开发者使用共享代码库构建跨平台移动应用程序。虽然它们的目标都是减少 Android 和 iOS 开发之间的重复工作,但它们在编程语言、渲染方法、性能特性和生态系统成熟度方面有所不同。
以下概述对比了目前一些使用最广泛的跨平台框架。
| 语言 | 跨平台代码共享 | 社区成熟度 | 应用示例 | |
| Kotlin Multiplatform | Kotlin | 灵活共享业务逻辑和跨平台 UI, 同时在需要时保留原生平台代码。 | 快速增长 | Duolingo, McDonald's, Forbes, Philips, H&M, Bolt |
| Flutter | Dart | 大多数应用逻辑和 UI 在单一的 Dart 代码库中共享。 | 规模庞大且成熟 | eBay Motors, Alibaba, Google Pay, 字节跳动应用 |
| React Native | JavaScript, TypeScript | 业务逻辑和 UI 组件在平台间共享, 涵盖从单个功能到完整应用。 | 规模庞大且成熟 | Microsoft Office, Teams, Xbox Game Pass; Facebook, Instagram |
| .NET MAUI | C#, XAML | 业务逻辑和 UI 在单一的 C# 代码库中跨平台共享。 | 已建立 | NBC Sports Next, Escola Agil, Azure App |
| Ionic | JavaScript | 大多数应用逻辑和 UI 通过单一的 基于 Web 的代码库共享,通过插件访问原生功能。 | 成熟 | T-Mobile, BBC (儿童应用), EA Games |
| NativeScript | JavaScript, TypeScript | 大多数应用逻辑和 UI 在单一的 JavaScript 或 TypeScript 代码库中跨平台共享。 | 已建立 | Daily Nanny, Groov, Breethe |
您还可以查看关于最受欢迎的跨平台技术的更详细概述。
Kotlin Multiplatform
Kotlin Multiplatform 使团队能够使用 Kotlin 在平台间共享应用程序逻辑。借助 Compose Multiplatform,开发者可以共享多达 100% 的应用程序代码(包括 UI),同时在需要时仍能与原生 API 集成。这种方法允许团队从单一代码库构建适用于 Android、iOS、桌面端和 Web 的应用程序,同时保持原生能力。
Flutter
Flutter 是由 Google 创建的跨平台框架,使用 Dart 编程语言和自己的渲染引擎。由于它控制 UI 渲染层,Flutter 可以在不同平台上提供一致的视觉效果和强大的性能。详细探索 Kotlin Multiplatform 和 Flutter,以更好地了解它们的能力并确定适合您跨平台项目的方案。
React Native
React Native 使开发者能够使用 JavaScript 和 React 库构建移动应用。它在通过 JavaScript 运行时执行逻辑的同时渲染原生 UI 组件,这使其在具有 Web 开发经验的团队中很受欢迎。查看 Kotlin Multiplatform 和 React Native 概述,这可能会帮助您为产品和团队选择合适的方案。
.NET MAUI
.NET MAUI 是 Microsoft 的跨平台框架,用于使用 C# 和 .NET 生态系统构建原生移动和桌面应用程序。它允许开发者从单一代码库定位 Android、iOS、macOS 和 Windows,并与 Visual Studio 等工具紧密集成。
Ionic
Ionic 是一个使用 HTML、CSS 和 JavaScript 等 Web 技术的混合移动框架。应用程序在 WebView 中运行,并通过插件或原生桥接访问设备功能,对于具有深厚 Web 开发背景的团队来说,Ionic 是一个不错的选择。
NativeScript
NativeScript 是一个开源框架,用于使用 JavaScript 或 TypeScript 构建原生移动应用。它渲染真实的原生 UI 组件并提供对平台 API 的直接访问,允许开发者创建具有原生性能和用户体验的跨平台应用。
Kotlin Multiplatform 真实案例
Duolingo、McDonald's、Netflix、9GAG、VMware、Cash App、飞利浦以及许多其他大公司正越来越多地采用 Kotlin Multiplatform,以便在保持原生性能和平台特定用户体验的同时从这些效率中受益。其中一些公司选择通过共享其现有 Kotlin 代码中特定的、关键的部分来增强其应用的稳定性。另一些公司则旨在在不损害应用质量的情况下最大限度地复用代码,并在移动端、桌面端、Web 和电视端共享所有应用逻辑,同时在每个平台上保留原生 UI。这种方法的好处从已经采用它的公司的故事中显而易见。
Duolingo
Duolingo 使用 Kotlin Multiplatform 来帮助加速其移动平台的开发。该公司每周向 176 个国家超过 4000 万日活跃用户发布 Android 和 iOS 更新,团队报告称,Kotlin Multiplatform 正越来越多地帮助他们跨平台更快地交付功能。观看完整视频。
McDonald’s
McDonald’s 应用背后的 Umain 团队最初在其支付功能中采用了 Kotlin Multiplatform,随后将其扩展到整个移动应用程序。在引入共享 Kotlin 代码后,团队报告称崩溃减少且各平台性能有所提高。这一转型还帮助团队从独立的 Android 和 iOS 团队转向了更统一的移动开发团队。观看完整视频。
Forbes
通过在 iOS 和 Android 之间共享超过 80% 的逻辑,Forbes 现在可以在两个平台上同时推出新功能,同时还保留了根据特定平台自定义功能的灵活性。这使得团队能够更快地创新并响应市场需求。阅读完整故事。
您还可以探索开发者应考虑在其现有或新项目中使用 Kotlin Multiplatform 的原因以及它为何继续受到关注。
常见问题解答
问:什么是跨平台移动开发?
答:跨平台移动开发(也称为跨平台应用开发)是一种允许您使用一个代码库构建可在多个操作系统(如 iOS 和 Android)上运行的应用程序的方法。通过跨平台共享代码,开发者可以降低成本并更快上市。
问:我该如何选择跨平台框架?
答:根据团队的技能、项目要求和长期产品目标选择跨平台框架。例如,对于注重性能、可维护性和原生外观的团队来说,Kotlin Multiplatform 特别有吸引力,尤其是在使用 Compose Multiplatform 共享 UI 代码时。React Native 通常受到具有 JavaScript 和 React 经验的团队的青睐,特别适用于快速原型设计。.NET MAUI 是在 .NET 生态系统中工作的开发者的强大选择。
问:Kotlin Multiplatform 和 Compose Multiplatform 有什么区别?
答:Kotlin Multiplatform 是核心技术,允许您在包括 Android、iOS、桌面端、Web 和服务器端在内的多个平台间共享代码。它专注于代码复用,除非您愿意,否则不会替换原生 UI。Compose Multiplatform 是构建在 Kotlin Multiplatform 之上的可选 UI 框架。它允许您使用类似于 Android 上的 Jetpack Compose 的现代声明式方法跨平台共享用户界面。您可以使用它从单一代码库为 Android、iOS、桌面端和 Web 构建具有视觉吸引力、响应式的 UI。
问:最受欢迎的移动开发框架是什么?
答:受欢迎的跨平台移动应用开发框架包括 Kotlin Multiplatform、Flutter、React Native、.NET MAUI 等。您可以查看最受欢迎的跨平台技术概述,找到最适合您需求的技术。
如果您的团队在采用新的多平台技术方面需要帮助,我们建议查阅我们的指南:《如何向您的团队引入多平台开发》。
