Kotlin Multiplatform的现状—2023年网络研讨会

2023-12-18 18:12

本文主要是介绍Kotlin Multiplatform的现状—2023年网络研讨会,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kotlin Multiplatform的现状—2023年网络研讨会

在2023年,Kotlin Multiplatform因其开发、当前状态和未来潜力而受到了相当大的关注。随着越来越多的开发者对采用KMP进行跨平台解决方案表示兴趣,JetBrains在11月下旬推出了一系列网络研讨会作为回应。首次网络研讨会聚焦于“Kotlin Multiplatform的现状”,旨在解答开发者的问题。今天,我很高兴与大家分享这个信息会议中的关键见解的简要总结。

什么是Kotlin Multiplatform?


Kotlin Multiplatform允许您为各种平台创建应用程序,并有效地跨平台重用代码,同时保留本地编程的优点。您的多平台应用程序将在不同的操作系统上运行,例如iOS、Android、macOS、Windows、Linux等。

https://www.jetbrains.com/kotlin-multiplatform/

KMP代码将被编译成Android的.jar文件和iOS的.framework文件。随后,我们可以将其作为标准依赖项合并到Android/iOS项目中。

Kotlin Multiplatform现在已经稳定并且可以用于生产环境

Jetbrains团队在几周前宣布了KMP的稳定性,这意味着我们可以毫无顾虑地在生产环境中使用它,当然,在此通知之前,许多项目已经使用KMP创建了。

Kotlin Multiplatform稳定版给我们带来了以下好处:

  • 严格的兼容性保证:请查看kotl.in/kmp-stability
  • 更简单的配置
  • 更快的构建速度
  • 更好的运行时性能
  • 新的文档资料

KMP库


自从Beta版本以来,KMP库的数量倍增,提供了各种工具,用于网络通信、数据存储、数学计算、分析等,为快速自信的应用程序开发提供了支持。
如果您想查看这些库的列表,一个很好的资源可能是Awesome Kotlin Multiplatform。

http://github.com/terrakok/kmp-awesome


默认层次结构模板

JetBrains团队正在努力改进构建配置体验,以使Kotlin多平台的入门更加容易。让我们来看一下下面的代码。

现在,让我们回顾一下sourceSets部分;它包含了KMP项目不同目标的目录。即使在最常见的情况下,也需要一些工作来设置它们。例如,如果我们考虑iOS的情况,我们需要为不同的架构创建不同的sourceSets。从Kotlin 1.9.20开始,只需声明您需要的目标,sourceSets将会自动为您生成。KMP使用一种称为默认层次结构模板的东西来实现这一点。


你可以使用sourceSets为每个平台定义依赖

开始使用Kotlin Multiplatform

JetBrains团队还做了另一件事,创建了一个新的文档门户。它包含了有关如何开始使用KMP、如何发布您的应用程序、示例等详细指南。您只需点击以下链接即可打开:kotl.in/kmp-portal

Kotlin-Swift互操作性

在网络研讨会中,还提到了有关Kotlin-Swift互操作性的一些信息,它指的是Kotlin和Swift之间的当前互操作性状态。这是一个由社区创建并由JetBrains团队改进的存储库。它涵盖了不同的方面,如函数、异常、数据类等等。请查看以下存储库以获取更多信息:kotl.in/interopedia

Compose Multiplatform

http://jb.gg/compose

最近的改进:1.5.0版本

  • 对话框、弹出窗口
  • 窗口插图
  • iOS的自然滚动
  • 120Hz刷新率
  • 稳定的桌面测试框架
  • 所有Material 3组件现已可用:ModalBottomSheet、SearchBar、DockedSearchBar、ExposedDropdownMenuBox
  • iOS的TextField改进
  • 兼容编译器缓存,增量构建更快
  • K2支持预览

Kotlin Multiplatform向导

现在,我们有一种新的更简单的方法来创建KMP项目,称为Kotlin Multiplatform向导。这是一个基于Web的向导,提供了最新的状态和依赖版本。您可以从以下链接打开它:kmp.jetbrains.co。例如,您可以选择要定位的平台以及是否共享UI界面。

Fleet

现在是时候谈谈Fleet了,这时会对这个工具与Android Studio进行一小比较。通常,Android Studio是用于开发KMP项目的集成开发环境(IDE),但我们有一个小细节,那就是Swift文件在Android Studio中被列为不支持的文本文件,而Fleet则具备对Swift的兼容性。

但是Fleet是什么呢?Fleet是JetBrains的下一代IDE,从头开始构建,基于20年开发IDE的经验。JetBrains Fleet使用IntelliJ代码处理引擎,具有分布式IDE架构和重新设计的用户界面。需要提到的是,Fleet目前还处于预览阶段。

https://www.jetbrains.com/fleet/



Fleet是多语言的,这意味着它支持许多语言。对我们来说最有趣的是它支持Kotlin和Swift。

Fleet是多语言的


Fleet: 总结一下

  • 由JetBrains打造的下一代多语言IDE
  • 提供对Kotlin和Swift的跨语言支持
  • 在公共预览期间免费使用

Amper

这是JetBrains团队最近宣布的最新工具。Amper是一个项目配置工具。它的目标是增强用户在项目配置和工具易用性方面的体验,即提供与IDE内部的兼容性,同时提供简单直接的初始体验。



以下是一个Amper的清单文件示例,用于 Kotlin Multiplatform 共享库,该库可以在 JVM、Android 和 iOS 应用程序中使用。

你可以先查看Amper的GitHub存储库,那里会有更多详细信息和许多使用示例:

github.com/JetBrains/amper

结论

本文讨论了Kotlin多平台最新的发展现状,Kotlin在各个技术方向均有较大的发展,希望本文能对你全面了解Kotlin多平台有较大帮助。

这篇关于Kotlin Multiplatform的现状—2023年网络研讨会的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/509342

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [