Skip to content

Kotlin Multiplatform 範例

這是一個精選專案清單,旨在展示 Kotlin Multiplatform 強大且獨特的應用。

我們目前不接受對此頁面的貢獻。 若要將您的專案作為 Kotlin Multiplatform 範例展示,請在 GitHub 上使用 kotlin-multiplatform-sample 主題。 請參閱 GitHub 文件 以了解如何在主題中展示您的專案。

一些專案使用 Compose Multiplatform 作為使用者介面,共用了幾乎所有的程式碼。 其他專案則在使用者介面使用原生程式碼,僅共用例如資料模型和演算法等部分。 若要建立您自己的全新 Kotlin Multiplatform 應用程式,我們建議使用 web 精靈

您可以在 GitHub 上透過 kotlin-multiplatform-sample 主題找到更多範例專案。 若要探索整個生態系統,請查看 kotlin-multiplatform 主題。

JetBrains 官方範例

名稱描述共用內容值得關注的程式庫使用者介面
官方 KotlinConf 應用程式KotlinConf 的伴隨應用程式。 其 Android、iOS、桌面與 Web 的用戶端應用程式是使用 Compose Multiplatform 以共用 UI 方式建置。 後端應用程式則由 Ktor 伺服器端架構 與 Exposed 資料庫程式庫支援。
  • UI
  • 模型
  • 網路
  • 資料儲存
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • ktor-client
  • ktor-server
  • multiplatform-settings
  • Android 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
Image Viewer一個用於拍攝、檢視與儲存圖片的應用程式。包含地圖支援。UI 使用 Compose Multiplatform。於 KotlinConf 2023 推出。
  • UI
  • 模型
  • 網路
  • 動畫
  • 資料儲存
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • play-services-maps
  • play-services-locations
  • android-maps-compose
  • accompanist-permissions
  • Android 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
Chat展示如何在 SwiftUI 介面中內嵌 Compose Multiplatform 元件。使用案例為線上通訊。
  • UI
  • 模型
  • 網路
  • Android 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
  • iOS 上的 SwiftUI
Jetcaster Multiplatform將 Compose 範例應用程式 Jetcaster 改為多平台版本,在原始的 Android 版本中加入了 iOS 與桌面目標。 UI 已遷移至 Compose Multiplatform,且多個程式庫已被多平台版本或替代方案取代。 遷移的考量與過程已在 Jetcaster 遷移教學中說明。
  • 模型
  • 網路
  • UI
  • 資料儲存
  • coil
  • koin
  • kotlinx-coroutines
  • kotlinx-datetime
  • kotlin-test
  • ktor-client
  • Room
  • Android、iOS 與桌面上的 Compose Multiplatform
KMM RSS Reader一個用於讀取 RSS 來源的範例應用程式,旨在展示 Kotlin Multiplatform 如何應用於生產環境。UI 以原生方式實作,但有一個實驗性分支展示了如何在 iOS 與桌面上使用 Compose Multiplatform。網路功能透過 Ktor HTTP 用戶端實現,而 XML 剖析則以原生方式實作。UI 狀態 (UI State) 的共用採用了 Redux 架構。
  • 模型
  • 網路
  • UI 狀態
  • 資料儲存
  • kotlinx-serialization
  • kotlinx-coroutines
  • ktor-client
  • voyager
  • coil
  • multiplatform-settings
  • napier
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 與桌面上的 Compose Multiplatform(位於實驗性分支)
  • iOS 上的 SwiftUI
Kotlin Multiplatform Sample一個簡單的計算機應用程式。展示如何使用 expectedactual 宣告將 Kotlin 與原生程式碼整合。

演算法

  • Android 上的 Jetpack Compose
  • SwiftUI

推薦範例

名稱描述共用內容值得關注的程式庫使用者介面
Confetti展示 Kotlin Multiplatform 與 Compose Multiplatform 許多不同面向的作品。使用案例為一個用於獲取並顯示研討會日程資訊的應用程式。包含對 Wear 與 Auto 平台的支援。使用 GraphQL 進行用戶端-伺服器通訊。其架構在 KotlinConf 2023 中有深入探討。
  • UI
  • 模型
  • 網路
  • 資料儲存
  • 導覽
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • decompose
  • koin
  • jsonpathkt-kotlinx
  • horologist
  • google-cloud
  • firebase
  • bare-graphql
  • apollo
  • accompanist
  • Android、Auto 與 Wear 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
People In Space展示 Kotlin Multiplatform 可以執行的多種不同平台。使用案例為顯示目前在太空中的人數以及國際太空站的位置。
  • 模型
  • 網路
  • 資料儲存
  • kotlinx-serialization
  • kotlinx-coroutines
  • kotlinx-datetime
  • ktor-client
  • koin
  • multiplatform-settings
  • SQLDelight
  • Android 與 Wear OS 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
  • iOS 與 macOS 上的 SwiftUI
Sessionize / Droidcon一個使用 Sessionize API 查看 Droidcon 活動議程的應用程式。可以針對任何在 Sessionize 中儲存演講資訊的活動進行自訂。與 Firebase 整合,因此執行時需要 Firebase 帳戶。
  • UI
  • 模型
  • 網路
  • 資料儲存
  • kotlinx-coroutines
  • kotlinx-datetime
  • ktor-client
  • koin
  • multiplatform-settings
  • firebase
  • kermit
  • accompanist
  • hyperdrive-multiplatformx
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 上的 Compose Multiplatform
KaMPKit一組用於 Kotlin Multiplatform 開發的程式碼與工具。旨在展示建置 Kotlin Multiplatform 應用程式時的程式庫、架構選擇與最佳實務。使用案例為下載並顯示狗品種的資訊。已在此 影片教學中介紹。
  • 模型
  • 網路
  • ViewModel
  • 資料儲存
  • ktor-client
  • koin
  • multiplatform-settings
  • kermit
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 上的 SwiftUI

其他社群範例

名稱描述共用內容值得關注的程式庫使用者介面
NYTimes KMP一個基於 Compose Multiplatform 的紐約時報 (New York Times) 應用程式版本。允許使用者瀏覽與閱讀文章。請注意,若要建置並執行此應用程式,您需要一個 紐約時報的 API 金鑰
  • UI
  • 模型
  • 網路
  • kotlinx-serialization
  • kotlinx-datetime
  • kotlinx-coroutines
  • ktor-client
  • molecule
  • decompose
  • horologist
  • Android 與 Wear 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
Focus Bloom一個生產力與時間管理應用程式。允許使用者排定任務並提供其成就的回饋。
  • UI
  • 模型
  • 動畫
  • 資料儲存
  • kotlinx.serialization
  • kotlinx.coroutines
  • kotlinx.datetime
  • koin
  • navigation-compose
  • multiplatform-settings
  • SQLDelight
  • Android、iOS 與桌面上的 Compose Multiplatform
Recipe App一個用於檢視食譜的展示應用程式。展示了動畫的使用。
  • UI
  • 模型
  • 資料儲存

kotlinx-coroutines

  • Android 上的 Jetpack Compose
  • iOS、桌面與 Web 上的 Compose Multiplatform
D-KMP-sample一個展示 宣告式 UI 與 Kotlin MultiPlatform 架構 的範例應用程式。使用案例為檢索並顯示不同國家的疫苗接種統計數據。
  • 網路
  • 資料儲存
  • ViewModel
  • 導覽
  • ktor-client
  • multiplatform-settings
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 上的 SwiftUI
Notflix一個從 The Movie Database 獲取資料以顯示目前趨勢、即將上映以及熱門電影與電視節目的應用程式。需要您在 The Movie Database 建立 API 金鑰。
  • 模型
  • 網路
  • 快取
  • ViewModel
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • multiplatform-settings
  • napier
  • Android 上的 Jetpack Compose
  • iOS 上的 SwiftUI
Twine - RSS ReaderTwine 是一個使用 Kotlin 與 Compose Multiplatform 建置的多平台 RSS 閱讀器應用程式。它具有優美的使用者介面與體驗來瀏覽訂閱源,並支援 Material 3 基於內容的動態佈景主題。
  • 模型
  • 網路
  • 資料儲存
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • napier
  • decompose
  • Android 與 iOS 上的 Compose Multiplatform
Shopping By KMP一個使用 Jetpack Compose Multiplatform 建置的跨平台應用程式,這是一個透過 Kotlin 在多個平台間共用 UI 的宣告式架構。該應用程式允許使用者在 Android、iOS、Web、桌面、Android Automotive 與 Android TV 上瀏覽、搜尋與購買購物目錄中的產品。
  • 模型
  • 網路
  • 資料儲存
  • UI
  • ViewModel
  • 動畫
  • 導覽
  • UI 狀態
  • 使用案例
  • 單元測試
  • UI 測試
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • datastore
  • koin
  • google-map
  • navigation-compose
  • coil
  • kotest
  • Android、iOS、Web、桌面、Automotive 與 Android TV 上的 Compose Multiplatform
Music App KMP一個展示如何在不同平台上與原生 API(如 MediaPlayer)互動的應用程式。它使用 Spotify API 來獲取資料。
  • 模型
  • 網路
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • decompose
  • Android、iOS、桌面與 Web 上的 Compose Multiplatform
RijksmuseumRijksmuseum 是一個多模組化 (multimodular) 的 Kotlin 與 Compose Multiplatform 應用程式,提供了一種沈浸式的方式來探索阿姆斯特丹著名的荷蘭國立博物館 (Rijksmuseum) 的藝術收藏。它利用 Rijksmuseum API 來獲取並顯示各種藝術作品的詳細資訊,包括圖片與描述。
  • UI
  • 模型
  • 網路
  • 導覽
  • ViewModel
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • koin
  • navigation-compose
  • Coil
  • Jetpack ViewModel
  • Android、iOS、桌面與 Web 上的 Compose Multiplatform