Skip to content

Kotlin Multiplatform 和 Flutter:跨平台開發解決方案

在快速發展的科技世界中,開發人員不斷尋求高效的框架和工具以協助他們建構高品質的應用程式。然而,在眾多可能性中進行選擇時,重要的是要避免過度強調尋找所謂的「最佳」選項,因為這種方法不一定總能帶來最合適的選擇。

每個專案都是獨特的,並有其特定需求。本文旨在協助您評估您的選擇,並更好地理解哪種技術(例如 Kotlin Multiplatform 或 Flutter)最適合您的專案,以便您做出明智的決策。

跨平台開發:現代應用程式建構的統一方法

跨平台開發提供了一種方法,可透過單一程式碼庫建構能在多個平台上執行的應用程式,消除了為每個系統重寫相同功能的需要。雖然通常與 行動開發(針對 Android 和 iOS)相關聯,但這種方法遠不止於行動裝置,還涵蓋了網路、桌面,甚至是伺服器端環境。

其核心理念是最大限度地提高程式碼重用性,同時確保在必要時仍可實作平台特定功能,從而簡化開發流程並減少維護工作。團隊可以加快開發週期、降低成本並確保跨平台的一致性,這使得跨平台開發在當今日益多樣化的應用程式生態系統中成為明智的選擇。

Kotlin Multiplatform 和 Flutter:簡化跨平台開發

Flutter 和 Kotlin Multiplatform 是兩種流行的跨平台技術,簡化了在不同平台上開發應用程式的過程。

Flutter

Flutter 是一個開源框架,用於從單一程式碼庫建構原生編譯的多平台應用程式。它讓您能夠在 Android、iOS、網路、桌面(Windows、macOS、Linux)和嵌入式系統上建立豐富的應用程式體驗——所有這些都來自單一、共用的應用程式程式碼庫。Flutter 應用程式是使用 Dart 程式語言編寫的。Flutter 受到 Google 的支援和使用。

最初於 2014 年以 Sky 的名稱推出,Flutter 1.0 於 2018 年 12 月在 Flutter Live 期間正式發布。

Flutter 開發者社群龐大且高度活躍,提供持續的改進和支援。Flutter 允許使用由 Flutter 和 Dart 生態系統中的開發人員貢獻的共用套件。

Kotlin Multiplatform

Kotlin Multiplatform (KMP) 是一種由 JetBrains 開發的開源技術,讓開發人員能夠為 Android、iOS、網路、桌面(Windows、macOS、Linux)和伺服器端建立應用程式,使他們能夠在這些平台上高效地重用 Kotlin 程式碼,同時保留原生程式設計的優勢。

透過 Kotlin Multiplatform,您有多種選擇:您可以共用所有程式碼,除了應用程式進入點之外;共用單一邏輯片段(例如網路或資料庫模組);或共用業務邏輯,同時保持 UI 原生。

Kotlin Multiplatform 是一種可重用高達 100% 程式碼的技術

Kotlin Multiplatform 最初於 2017 年作為 Kotlin 1.2 的一部分推出。2023 年 11 月,Kotlin Multiplatform 變得 穩定。在 Google I/O 2024 期間,Google 宣布其 對 Kotlin Multiplatform 的支援,用於在 Android 上共用 Android 和 iOS 之間的業務邏輯。

探索 Kotlin Multiplatform

Compose Multiplatform

您可以使用 Compose Multiplatform 在多個平台上編寫共用 UI 程式碼,這是一個由 JetBrains 開發的現代宣告式框架,該框架建構於 Kotlin Multiplatform 和 Google 的 Jetpack Compose 之上。

Compose Multiplatform 目前在 iOS、Android 和桌面端已趨於穩定,網路端則處於 Alpha 階段。

探索 Compose Multiplatform

我們的專門文章概述了 Compose Multiplatform 和 Jetpack Compose 之間的關係,並強調了主要差異。

Kotlin Multiplatform 和 Flutter:概述

Kotlin MultiplatformFlutter
建立者JetBrainsGoogle
語言KotlinDart
靈活性和程式碼重用您可以共用程式碼庫的任何部分,包括業務邏輯和/或 UI,從 1% 到 100%。控制應用程式的每個像素,以建立客製化和適應性設計,並在所有平台之間實現 100% 的程式碼共用。
套件、依賴項和生態系統套件可從 Maven Central 和其他儲存庫取得,包括

klibs.io (Alpha 版本),旨在簡化 KMP 函式庫的搜尋。

清單 包含一些最流行的 KMP 函式庫和工具。

套件可從 Pub.dev. 取得。
建構工具Gradle (針對 Apple 裝置的應用程式還需 Xcode)。Flutter 命令列工具 (內部使用 Gradle 和 Xcode)。
程式碼共用Android、iOS、網路、桌面和伺服器端。Android、iOS、網路、桌面和嵌入式裝置。
編譯針對桌面和 Android 編譯為 JVM 位元組碼,針對網路編譯為 JavaScript 或 Wasm,針對原生平台編譯為平台特定二進位檔。偵錯建構在虛擬機中執行 Dart 程式碼。

發行建構為原生平台輸出平台特定二進位檔,為網路輸出 JavaScript/Wasm。

與原生 API 的通訊原生 API 可直接從 Kotlin 程式碼中存取,使用 與主機平台的通訊可透過 平台通道 實現。
UI 渲染Compose Multiplatform 可用於跨平台共用 UI,基於 Google 的 Jetpack Compose,使用與 OpenGL、ANGLE(將 OpenGL ES 2 或 3 呼叫轉換為原生 API)、Vulkan 和 Metal 相容的 Skia 引擎。Flutter 小工具使用客製化的 Impeller 引擎 在螢幕上渲染,該引擎根據平台和裝置的不同,直接使用 Metal、Vulkan 或 OpenGL 與 GPU 通訊。
UI 開發迭代即使是通用程式碼,也可以使用 UI 預覽。

透過

,您可以即時看到 UI 變更,而無需重新啟動應用程式或丟失其狀態。

VS Code 和 Android Studio 均提供 IDE 外掛程式。
使用該技術的公司ForbesTodoistMcDonald’sGoogle WorkspacePhilips9gagBaiduAutodeskTouchLabInstabee,以及更多公司列在我們的 中。小米Wolt環球影城阿里巴巴集團字節跳動GeicoeBay MotorsGoogle PaySo Vegan,以及更多公司列在 Flutter 展示 中。

探索全球公司利用 Kotlin Multiplatform 進行跨平台開發的實際用例。

您還可以查看 Google 的部落格文章,讓開發人員更輕鬆地進行跨平台開發,其中提供了關於為您的專案選擇正確技術堆疊的指導。

如果您正在尋找 Kotlin Multiplatform 和 Flutter 之間的額外比較,您還可以觀看 Philipp Lackner 製作的 KMP 與 Flutter 影片。在這部影片中,他分享了一些關於這些技術的有趣觀察,包括程式碼共用、UI 渲染、效能以及這兩種技術的未來。

透過仔細評估您的特定業務需求、目標和任務,您可以確定最符合您需求的跨平台解決方案。