Kotlin Multiplatform项目推荐 | 太空人分布图

news2024/9/30 21:19:41

Kotlin Multiplatform项目推荐 | 太空人分布图

项目简介

Kotlin Multiplatform项目是一种跨平台开发技术,它可以同时使用SwiftUI、Jetpack Compose、Compose for Wear OS、Compose for Desktop、Compose for Web、Kotlin/JS + React等客户端框架,并且使用Ktor作为后端。太空人分布图项目目前可以在以下平台上运行:

  • Android(Jetpack Compose)
  • Android小部件(基于Compose的Glance API - 由https://github.com/yschimke贡献)
  • Wear OS(Compose for Wear OS - 主要由https://github.com/yschimke开发)
  • iOS(SwiftUI)
  • iOS(Compose for iOS - 实验性支持!)
  • iOS小部件(SwiftUI)
  • watchOS(SwiftUI)(由https://github.com/nealsanche贡献)
  • macOS(SwiftUI)
  • Swift可执行包
  • 桌面应用(Compose for Desktop)
  • Web应用(基于JS的Compose for Web)
  • Web应用(基于Wasm的Compose for Web)
  • Web应用(Kotlin/JS + React封装)(由https://github.com/PatilShreyas贡献)
  • JVM(小型的Ktor后端服务 + 共享模块中的Main.kt)

该项目利用了Open Notify PeopleInSpace API (http://open-notify.org/Open-Notify-API/People-In-Space/),用于显示当前太空中的人员列表以及国际空间站的位置(灵感来自https://kousenit.org/2019/12/19/a-few-astronomical-examples-in-kotlin/)。

这个项目被包含在官方的Kotlin多平台移动文档 (https://kotlinlang.org/docs/mobile/samples.html#peopleinspace)和Google Dev Library (https://devlibrary.withgoogle.com/products/android) 中作为示例。

请注意,这个存储库非常注重简洁,以更清晰地说明Kotlin多平台项目的关键部分,并帮助刚开始探索KMP的人快速上手(当然主要专注于使用Jetpack Compose和SwiftUI)。如果你已经超过这个阶段,我强烈推荐你查看Touchlab的KaMPKit (https://github.com/touchlab/KaMPKit)。我还有以下示例,演示了各种Kotlin多平台库的使用(也使用了Jetpack Compose和SwiftUI):

  • BikeShare (https://github.com/joreilly/BikeShare)
  • FantasyPremierLeague (https://github.com/joreilly/FantasyPremierLeague)
  • MortyComposeKMM (https://github.com/joreilly/MortyComposeKMM)
  • StarWars (https://github.com/joreilly/StarWars)
  • Confetti (https://github.com/joreilly/Confetti)
  • GalwayBus (https://github.com/joreilly/GalwayBus)
  • Chip-8 (https://github.com/joreilly/chip-8)

构建

您需要使用至少Android Studio Flamingo(注意:Java 17是现在所需的最低版本)。需要Xcode 13.2或更高版本(因为使用了新的Swift 5.5并发API)。

打开PeopleInSpaceSwiftUI以查看iOS/watchOS/macOS项目。

要运行(基于React的)Web客户端,请运行./gradlew :web:browserDevelopmentRun

要运行后端,可以运行./gradlew :backend:run,或者通过Android Studio直接运行Server.kt。然后,您应该能够在浏览器中打开http://localhost:9090/astros_local.json

Compose for Web客户端(JS)

Compose for Web客户端位于compose-web模块中,可以通过调用./gradlew :compose-web:jsBrowserDevelopmentRun来运行。

Compose for Web客户端(Wasm)

类似地,对于基于Kotlin/Wasm的版本,可以使用./gradlew :compose-web-wasm:wasmBrowserDevelopmentRun 运行。

Compose for Desktop客户端

该客户端在compose-desktop模块中可用,并可以使用./gradlew :compose-desktop:run来运行。请注意,在运行时需要使用适当版本的JVM(例如Java 11)。

Compose for iOS客户端

可以使用例如./gradlew :compose-ios:iosDeployIPhone13ProDebug来运行。

后端代码

已在Google App Engine部署中测试过。使用shadowJar插件创建"uber" jar,然后按照下面的示例进行部署。也可以将此jar部署到其他服务上。

./gradlew :backend:shadowJar
gcloud app deploy backend/build/libs/backend-all.jar --appyaml=backend/src/jvmMain/appengine/app.yaml

GraphQL后端

有一个GraphQL模块(graphql-server),可以使用./gradlew :graphql-server:bootRun在本地运行,并在http://localhost:8080/playground上提供"playground"。

项目截图

iOS (SwiftUI)

Android (Jetpack Compose)

watchOS (SwiftUI)

Wear OS (Wear Compose)

macOS (SwiftUI)

Compose for Desktop

Compose for Web

Web App (Kotlin/JS + React)

技术栈

使用的语言、库和工具包括:

  • Kotlin (https://kotlinlang.org/)
  • Kotlin协程 (https://kotlinlang.org/docs/reference/coroutines-overview.html)
  • Kotlinx序列化 (https://github.com/Kotlin/kotlinx.serialization)
  • Ktor客户端库 (https://github.com/ktorio/ktor)
  • Android架构组件 (https://developer.android.com/topic/libraries/architecture/index.html)
  • Koin (https://github.com/InsertKoinIO/koin)
  • SQLDelight (https://github.com/cashapp/sqldelight)
  • Jetpack Compose (https://developer.android.com/jetpack/compose)
  • SwiftUI (https://developer.apple.com/documentation/swiftui)
  • KMP-NativeCoroutines (https://github.com/rickclephas/KMP-NativeCoroutines)
  • Coil (https://coil-kt.github.io/coil/)

项目地址

https://github.com/joreilly/PeopleInSpace

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】-cp模型

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

IDEA 安装阿里Java编码规范插件

1.File>Settings 2.安装之后重启 开发过程中如果有不符合规范的地方,会自动出现提示

单片机学习笔记---独立按键控制LED状态

上一节学习的是独立按键控制LED亮灭 这一节我们先来讲一下按键的抖动: 对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以…

go slice 基本用法

slice(切片)是 go 里面非常常用的一种数据结构,它代表了一个变长的序列,序列中的每个元素都有相同的数据类型。 一个 slice 类型一般写作 []T,其中 T 代表 slice 中元素的类型;slice 的语法和数组很像&…

网络分层和网络原理之UDP和TCP

温故而知新 目录 网络分层 应用层 http协议 传输层 介绍 UDP协议 TCP协议 网络层 数据链路层 物理层 网络分层 一. 应用层 应用程序 现成的应用层协议有超文本协议http(不仅仅有文本). http协议 http://t.csdnimg.cn/e0e8khttp://t.csdnimg.cn/e0e8k 自定义应…

Linux 挂载读取、卸载 ntfs格式硬盘

windows常用的ntfs硬盘分区格式,在linux通常不能直接读取,不过挂载也是非常容易 一、挂载ntfs分区 1.安装 apt-get install ntfs-3g2.查看现在接上的硬盘 fdisk -l可以找到类似如下的,会显示microsoft basic data 3.创建挂载的目录 创…

Android P 背光机制流程分析

在android 9.0中,相比android 8.1而言,背光部分逻辑有较大的调整,这里就对android P背光机制进行完整的分析。 1.手动调节亮度 1.1.在SystemUI、Settings中手动调节 在界面(SystemUI)和Settings中拖动进度条调节亮度时,调节入口…

Topaz Video AI:无损放大,让你的视频更清晰!

在当今的数字时代,视频内容的重要性越来越受到人们的关注。无论是在社交媒体上分享生活片段,还是在商业领域中制作宣传视频,人们都希望能够展现出更高质量的视频内容。 然而,由于各种原因,我们经常会面临一个问题&…

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

mysql 存储过程学习

存储过程介绍 1.1 SQL指令执行过程 从SQL执行的流程中我们分析存在的问题: 1.如果我们需要重复多次执行相同的SQL,SQL执行都需要通过连接传递到MySQL,并且需要经过编译和执行的步骤; 2.如果我们需要执行多个SQL指令,并且第二个SQL指令需要…

哪吒汽车与经纬恒润合作升级,中央域控+区域域控将于2024年落地

近日,在2024哪吒汽车价值链大会上,哪吒汽车与经纬恒润联合宣布合作升级,就中央域控制器和区域域控制器展开合作,合作成果将在山海平台新一代车型上发布。 哪吒汽车首席技术官戴大力、经纬恒润副总裁李伟 经纬恒润在智能驾驶领域拥…

数据结构(绪论+算法的基本概念)

文章目录 一、绪论1.1、数据结构的基本概念1.2、数据结构三要素1.2.1、逻辑结构1.2.2、数据的运算1.2.3、物理结构(存储结构)1.2.4、数据类型和抽象数据类型 二、算法的基本概念2.1、算法的特性2.2、“好”算法的特质2.2.1、算法时间复杂度2.2.2、算法空…

一款强大的矢量图形设计软件:Adobe Illustrator 2023 (AI2023)软件介绍

Adobe Illustrator 2023 (AI2023) 是一款强大的矢量图形设计软件,为设计师提供了无限创意和畅行无阻的设计体验。AI2023具备丰富的功能和工具,让用户可以轻松创建精美的矢量图形、插图、徽标和其他设计作品。 AI2023在界面和用户体验方面进行了全面升级…

【GTK】GtkApplicationWindow/GtkApplication

一、GtkApplicationWindow 在GTK(GIMP Toolkit)应用程序开发中,并不是每个GTK程序都必须有一个GtkApplicationWindow,但大多数基于GTK的图形界面应用程序都会使用GtkApplicationWindow,因为它是一个方便的类&#xff…

幻兽帕鲁搭建私服,一键更新方法

看着帕鲁这么火,估计更新会变为常态了,如果有自己搭建私服的话,跟着我下面的方法去进行更新吧! 如果你还没有自己的私服,快去三五十搞一个吧,只需三五分钟,叫上你的小伙伴一起去搞起来吧 只需3分…

EXCEL VBA抓取网页JSON数据并解析

EXCEL VBA抓取网页JSON数据并解析 链接地址: https://api.api68.com/CQShiCai/getBaseCQShiCaiList.do?lotCode10036&date2024-01-26 Sub test() On Error Resume Next Sheet.Select Sheet1.Cells.ClearContents [a1:g1] Split("preDrawIssue|preDrawTi…

呼叫中心语音质检解决方案-苏州磐石云

呼叫中心语音质检解决方案是一种利用自动语音识别(ASR)和自然语言处理(NLP)技术来分析和评估呼叫录音的工具。它可以帮助呼叫中心监控和改进客户服务质量,提供以下功能和特点: 语音转文本:利用A…

dd 命令创建10G大小的文件

您可以使用Linux命令行工具dd来创建10GB大小的文件。以下是创建10GB文件的命令:dd if/dev/zero offile.img bs1G count10 在上述命令中,if参数指定输入文件为/dev/zero,这是一个特殊的文件,读取它会返回空字符(即零&am…

通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别

1)通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别 2)OPPO相关机型没法在Unity启用90或120FPS 3)手机输入法中的emoji 4)Unity Application Patching怎么用 这是第369篇UWA技术知识分享的推送,精选了UW…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…