Kotlinv2.4.0

Kotlin Multiplatform 示例

这是一个精选的项目列表,旨在展示 Kotlin Multiplatform 强健且独特的应用。

我们目前不接受对此页面的贡献。 要将您的项目作为 Kotlin Multiplatform 示例进行展示,请在 GitHub 上使用 kotlin-multiplatform-sample 话题。 请参阅 GitHub 文档 以了解如何在话题中展示您的项目。

一些项目使用 Compose Multiplatform 为用户界面共享了几乎所有的代码。 另一些项目则为用户界面使用原生代码,例如仅共享数据模型和算法。 要创建您自己的全新 Kotlin Multiplatform 应用程序,我们建议使用 Web 向导

您可以通过 kotlin-multiplatform-sample 话题在 GitHub 上找到更多示例项目。 要探索整个生态系统,请查看 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)演示如何将 Compose Multiplatform 组件嵌入到 SwiftUI 界面中。用例是联机消息传递。
  • UI
  • 模型
  • 网络
  • Android 上的 Jetpack Compose
  • iOS、桌面端和 Web 上的 Compose Multiplatform
  • iOS 上的 SwiftUI
Jetcaster 跨平台版将 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 阅读器一个用于消费 RSS 订阅源的示例应用程序,旨在展示 Kotlin Multiplatform 如何应用于生产环境。UI 是原生实现的,但有一个实验性分支展示了如何在 iOS 和桌面端使用 Compose Multiplatform。网络使用 Ktor HTTP 客户端完成,而 XML 解析则是原生实现的。使用 Redux 架构共享 UI 状态。
  • 模型
  • 网络
  • UI 状态
  • 数据存储
  • kotlinx-serialization
  • kotlinx-coroutines
  • ktor-client
  • voyager
  • coil
  • multiplatform-settings
  • napier
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 和桌面端上的 Compose Multiplatform(在实验性分支上)
  • iOS 上的 SwiftUI
Kotlin Multiplatform 示例一个简单的计算器应用程序。展示如何使用 expected 和 actual 声明集成 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
KaMPKitKotlin Multiplatform 开发的代码和工具集合。旨在展示构建 Kotlin Multiplatform 应用程序时的库、架构选择和最佳做法。用例是下载并显示有关狗品种的信息。在视频教程中进行了介绍。
  • 模型
  • 网络
  • ViewModel
  • 数据存储
  • ktor-client
  • koin
  • multiplatform-settings
  • kermit
  • SQLDelight
  • Android 上的 Jetpack Compose
  • iOS 上的 SwiftUI

其他社区示例

名称描述共享内容值得关注的库用户界面
纽约时报 KMP (NYTimes KMP)纽约时报应用程序的 Compose Multiplatform 版本。允许用户浏览和阅读文章。请注意,要构建和运行该应用程序,您需要一个来自 纽约时报的 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使用 Kotlin MultiPlatform 架构的声明式 UI 的示例应用程序。用例是检索并显示不同国家的疫苗接种统计数据。
  • 网络
  • 数据存储
  • 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 阅读器Twine 是一款使用 Kotlin 和 Compose Multiplatform 构建的跨平台 RSS 阅读器应用。它拥有精美的用户界面和体验以浏览订阅源,并支持 Material 3 基于内容的动态主题。
  • 模型
  • 网络
  • 数据存储
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • kotlinx-datetime
  • ktor-client
  • napier
  • decompose
  • Android 和 iOS 上的 Compose Multiplatform
KMP 购物 (Shopping By KMP)一款使用 Jetpack Compose Multiplatform 构建的跨平台应用程序。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
音乐应用 KMP (Music App KMP)一个展示如何在不同平台上与原生 API(如 MediaPlayer)进行交互的应用程序。它使用 Spotify API 获取数据。
  • 模型
  • 网络
  • UI
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • decompose
  • Android、iOS、桌面端和 Web 上的 Compose Multiplatform
荷兰国立博物馆 (Rijksmuseum)Rijksmuseum 是一款多模块 Kotlin 和 Compose Multiplatform 应用程序,提供了一种身临其境的方式来探索阿姆斯特丹著名的荷兰国立博物馆的艺术收藏。它利用 Rijksmuseum API 获取并显示各种艺术品的详细信息,包括图像和描述。
  • UI
  • 模型
  • 网络
  • 导航
  • ViewModel
  • kotlinx-coroutines
  • kotlinx-serialization
  • ktor-client
  • koin
  • navigation-compose
  • Coil
  • Jetpack ViewModel
  • Android、iOS、桌面端和 Web 上的 Compose Multiplatform