Skip to content

什麼是跨平台行動開發?

現今,許多公司面臨著為多個平台,特別是 Android 和 iOS,建構行動應用程式的挑戰。這就是為何跨平台行動開發解決方案已成為最受歡迎的軟體開發趨勢之一。

根據 Statista 的數據,2022 年第三季度 Google Play 商店有 355 萬個行動應用程式可用,App Store 則有 160 萬個,而 Android 和 iOS 加起來目前佔據了全球行動作業系統市場的 99%

您如何才能建立一個能觸及 Android 和 iOS 使用者的行動應用程式?在本文中,您將了解為何越來越多的行動工程師選擇跨平台或多平台行動開發方法。

跨平台行動開發:定義與解決方案

多平台行動開發是一種方法,讓您能夠建構一個能在多個作業系統上流暢運行的單一行動應用程式。在跨平台應用程式中,部分甚至是所有原始碼都可以共享。這意味著開發人員可以建立和部署同時適用於 Android 和 iOS 的行動資產,而無需為每個個別平台重新編寫程式碼。

行動應用程式開發的不同方法

有四種主要方式可以為 Android 和 iOS 建立應用程式。

1. 為每個作業系統分別建構原生應用程式

在建立原生應用程式時,開發人員會為特定的作業系統建構應用程式,並依賴專為單一平台設計的工具和程式語言:Android 使用 Kotlin 或 Java,iOS 使用 Objective-C 或 Swift。

這些工具和語言讓您可以存取指定作業系統的功能和能力,並讓您能夠開發具有直觀介面的響應式應用程式。但是,如果您想同時觸及 Android 和 iOS 使用者,您將必須建立獨立的應用程式,這需要大量的時間和精力。

2. 漸進式網路應用程式 (PWA)

漸進式網路應用程式 (PWA) 結合了行動應用程式的功能與網路開發中使用的解決方案。大致來說,它們提供了網站和行動應用程式的混合體。開發人員使用網路技術,例如 JavaScript、HTML、CSS 和 WebAssembly 來建構 PWA。

網路應用程式無需單獨打包或發布,並且可以在線上發布。它們可以透過電腦、智慧型手機和平板電腦上的瀏覽器存取,無需透過 Google Play 或 App Store 安裝。

這裡的缺點是,使用者在使用應用程式時無法利用其設備的所有功能,例如聯絡人、日曆、電話和其他資產,這導致使用者體驗受限。就應用程式效能而言,原生應用程式佔有領先地位。

3. 跨平台應用程式

如前所述,多平台應用程式旨在不同行動平台上運行一致。跨平台框架允許您編寫可共享和可重複使用的程式碼,以開發此類應用程式。

這種方法具有多項優點,例如時間和成本方面的效率。我們將在後面的章節中更詳細地探討跨平台行動開發的優缺點。

4. 混合式應用程式

當瀏覽網站和論壇時,您可能會注意到有些人會互換使用「跨平台行動開發」和「混合式行動開發」這兩個術語。然而,這樣做並不完全準確。

談到跨平台應用程式,行動工程師可以編寫一次程式碼,然後在不同平台上重複使用。另一方面,混合式應用程式開發是一種結合原生和網路技術的方法。它要求您將用網路開發語言(例如 HTML、CSS 或 JavaScript)編寫的程式碼嵌入到原生應用程式中。您可以使用框架(例如 Ionic Capacitor 和 Apache Cordova),借助額外的外掛程式來存取平台的原生功能。

跨平台開發和混合式開發之間唯一的相似之處是程式碼可分享性。在效能方面,混合式應用程式與原生應用程式不在同一水準。由於混合式應用程式部署單一程式碼庫,某些功能是特定於某個作業系統的,在其他作業系統上運行不佳。

原生還是跨平台應用程式開發:一場長期爭論

關於原生和跨平台開發的爭論在技術社群中仍未解決。這兩種技術都在不斷演進,並各自具有其優點和限制。

一些專家仍然偏好原生行動開發而非多平台解決方案,將原生應用程式更強的效能和更好的使用者體驗視為最重要的優點之一。

然而,許多現代企業需要在縮短上市時間和降低單平台開發成本的同時,仍希望在 Android 和 iOS 上都有所作為。這正是 Kotlin Multiplatform (KMP) 等跨平台開發技術可以提供協助的地方,正如 Netflix 的資深軟體工程師 David Henry 和 Mel Yahya 所指出

不穩定的網路連接高可能性促使我們傾向於行動解決方案,以實現強固的客戶端持久化和離線支援。對快速產品交付的需求促使我們嘗試多平台架構。現在我們更進一步,使用 Kotlin Multiplatform 在 Kotlin 中編寫一次平台無關的業務邏輯,並編譯成 Android 的 Kotlin 函式庫和 iOS 的原生通用框架。

Discover Kotlin Multiplatform

跨平台行動開發適合您嗎?

選擇適合您的行動開發方法取決於許多因素,例如業務需求、目標和任務。與任何其他解決方案一樣,跨平台行動開發也有其優點和缺點。

跨平台開發的優點

企業選擇這種方法而非其他選項的原因有很多。

1. 程式碼重複使用性

透過跨平台程式設計,行動工程師無需為每個作業系統編寫新程式碼。使用單一程式碼庫可以讓開發人員減少執行重複性任務的時間,例如 API 呼叫、資料儲存、資料序列化和分析實作。

像 Kotlin Multiplatform 這樣的技術讓您只需實作一次應用程式的資料、業務和呈現層。或者,您可以逐步採用 KMP:選擇一段經常變更且通常會不同步的邏輯,例如資料驗證、篩選或排序;將其轉換為跨平台;然後作為微型函式庫連接到您的專案。

在 JetBrains,我們定期進行 Kotlin Multiplatform 調查,並詢問社群成員他們在不同平台之間共享哪些程式碼部分。

Parts of code Kotlin Multiplatform users can share between platforms

2. 節省時間

由於程式碼重用性,跨平台應用程式所需的程式碼較少,而在編碼方面,程式碼越少越好。您無需編寫那麼多程式碼,因此節省了時間。此外,程式碼行數越少,出現錯誤的空間就越小,從而減少了測試和維護程式碼的時間。

3. 有效的資源管理

建構獨立的應用程式費用昂貴。擁有單一程式碼庫可協助您有效管理資源。您的 Android 和 iOS 開發團隊都可以學習如何編寫和使用共享程式碼。

4. 對開發人員有吸引力的機會

許多行動工程師將現代跨平台技術視為產品技術棧中理想的元素。開發人員在執行重複性例行任務(例如 JSON 解析)時可能會感到厭煩。然而,新技術和任務可以重新激發他們對工作的興奮、動力和樂趣。透過這種方式,擁有現代技術棧實際上可以讓您更容易組建行動開發團隊,並讓其保持長時間的投入和熱情。

5. 觸及更廣泛受眾的機會

您不必在不同平台之間做選擇。由於您的應用程式與多個作業系統相容,您可以滿足 Android 和 iOS 使用者的需求,並最大限度地擴大您的觸及範圍。

6. 更快的上市時間和客製化

由於您無需為不同平台建構不同的應用程式,因此可以更快地開發和推出您的產品。此外,如果您的應用程式需要客製化或轉換,程式設計師將更容易對程式碼庫的特定部分進行細微更改。這也將讓您能更及時地回應使用者回饋。

跨平台開發方法的挑戰

所有解決方案都有其自身的限制。技術社群中有些人認為,跨平台程式設計仍然存在與效能相關的故障。此外,專案負責人可能會擔心,他們對優化開發流程的關注可能會對應用程式的使用者體驗產生負面影響。

然而,隨著底層技術的改進,跨平台解決方案正變得越來越穩定、適應性強且靈活。

以下是兩項相隔 6 個月進行的 Kotlin Multiplatform 使用者調查結果,關於框架使用情況:

Kotlin Multiplatform usage survey results

另一個常見的擔憂是,多平台開發使得無縫支援平台原生功能變得不可能。然而,透過 Kotlin Multiplatform,您可以使用 Kotlin 的預期與實際宣告來讓您的多平台應用程式存取平台特定的 API。預期與實際宣告允許您在通用程式碼中定義您「預期」能夠在多個平台之間呼叫相同函數,並提供「實際」實作,這些實作可以透過 Kotlin 與 Java 和 Objective-C/Swift 的互通性與任何平台特定的函式庫進行互動。

隨著現代多平台框架的不斷演進,它們越來越能讓行動工程師打造出類似原生的體驗。如果應用程式編寫得當,使用者將無法察覺差異。然而,您產品的品質將嚴重依賴於您選擇的跨平台應用程式開發工具。

最受歡迎的跨平台解決方案

最受歡迎的跨平台框架包括 Flutter、React Native 和 Kotlin Multiplatform。每個框架都有其自身的功能和優勢。根據您使用的工具,您的開發流程和結果可能會有所不同。

Flutter

Flutter 由 Google 創建,是一個使用 Dart 程式語言的跨平台開發框架。Flutter 支援原生功能,例如定位服務、相機功能和硬碟存取。如果您需要創建 Flutter 不支援的特定應用程式功能,您可以使用 Platform Channel 技術編寫平台特定程式碼。

使用 Flutter 建構的應用程式需要共享其所有 UX 和 UI 層。此框架最棒的一點是其 Hot Reload 功能,它允許開發人員立即進行更改並查看。

在以下情況中,此框架可能是最佳選擇:

  • 您希望在應用程式之間共享 UI 元件,但又希望您的應用程式看起來接近原生。
  • 應用程式預期會對 CPU/GPU 造成大量負載,且效能可能需要優化。
  • 您需要開發一個 MVP (最小可行產品)。

使用 Flutter 建構的最受歡迎的應用程式包括 Google Ads、阿里巴巴的閒魚、eBay Motors 和 Hamilton。

詳細探索 Kotlin Multiplatform 和 Flutter,以更好地了解它們的功能並為您的跨平台專案確定最適合的選擇。

React Native

Facebook 於 2015 年推出了 React Native,作為一個開源框架,旨在協助行動工程師建構混合式原生/跨平台應用程式。它基於 ReactJS — 一個用於建構使用者介面的 JavaScript 函式庫。換句話說,它使用 JavaScript 來建構 Android 和 iOS 系統的行動應用程式。

React Native 提供對多個第三方 UI 函式庫的存取,這些函式庫具有現成可用的元件,有助於行動工程師在開發過程中節省時間。與 Flutter 一樣,它允許您由於 Fast Refresh 功能而立即看到所有更改。

在以下情況中,您應該考慮為您的應用程式使用 React Native:

  • 您的應用程式相對簡單,且預期是輕量級的。
  • 開發團隊精通 JavaScript 或 React。

使用 React Native 建構的應用程式包括 Facebook、Instagram、Skype 和 Uber Eats。

Kotlin Multiplatform

Kotlin Multiplatform 是一種由 JetBrains 開發的開源技術,它允許開發人員在跨平台共享程式碼的同時,保留原生程式設計的優點。其主要優點包括:

  • 能夠在 Android、iOS、網頁、桌面和伺服器端之間重複使用程式碼,並在需要時保留原生程式碼。
  • 與現有專案的無縫整合。您可以利用平台特定的 API,同時充分利用原生和跨平台開發。
  • 完整的程式碼共享靈活性以及共享邏輯和 UI 的能力,這得益於 Compose Multiplatform,一個由 JetBrains 建構的現代宣告式跨平台 UI 框架。
  • 當您已經在 Android 上使用 Kotlin 時,無需向您的程式碼庫引入新語言。您可以重複使用您的 Kotlin 程式碼和專業知識,這使得遷移到 Kotlin Multiplatform 比其他技術風險更低。

如果您的團隊需要協助採用新的多平台技術,我們建議查閱我們的指南:如何向您的團隊引入多平台開發

Get Started with Kotlin Multiplatform

麥當勞、Netflix、9GAG、VMware、Cash App、Philips 和許多其他公司已經在利用 Kotlin Multiplatform 逐步整合的能力及其低採用風險。其中一些公司選擇透過共享其現有 Kotlin 程式碼中特定關鍵部分來增強其應用程式的穩定性。其他公司則旨在最大限度地重複使用程式碼而不損害應用程式品質,並在行動裝置、桌面、網頁和電視之間共享所有應用程式邏輯,同時在每個平台上保留原生 UI。這種方法的優點從已採用它的公司的故事中顯而易見。

查看所有來自全球公司和新創公司的 Kotlin Multiplatform 案例研究

結論

隨著跨平台開發解決方案的不斷演進,其限制與所提供的好處相比已顯得微不足道。市場上有多種技術可用,所有這些技術都適用於不同的工作流程和需求。本文討論的每種工具都為考慮嘗試跨平台的團隊提供了廣泛的支援。

最終,仔細考慮您的特定業務需求、目標和任務,並為您希望透過應用程式實現的目標制定清晰的目標,將有助於您找出最適合您的解決方案。