Android生态下的Kotlin有哪些更新#GoogleIO 2023

news2025/2/8 12:15:19

Android生态下Kotlin有哪些更新#GoogleIO 2023

自Android官方宣布Kotlin作为Android开发的第一语言,过去将近6年时间。下面是GoogleIO 2023宣布的Android生态的4项重要更新。

Kotlin编译器2.0版本

如果你是一位Kotlin开发者,你可能会对听到这个消息感到兴奋,因为Kotlin语言将通过2.0版本得到重大升级。有意思的是,新的Kotlin编译器版本2.0将成为Kotlin 2.0的默认编译器。这大大提升了性能,与以前的Kotlin编译器版本1.8相比。
Google IO
明年(2024年)将发布最终更新。Google通过Kotlin 2.0编译器旨在提高开发人员的生产力、易用性,并且新的2.0编译器还将推动Kotlin语言的更多功能进步。

如果您想尝试新的Kotlin 2.0编译器,只需在您的模块的Gradle Build文件中将Kotlin语言版本更新为2.0即可。

Kotlin DSL 用于 Gradle 构建

谷歌非常看好使用 Kotlin 语言完全开发 Android 应用。从 Android Studio Giraffe 开始,编写 Gradle 构建脚本文件的默认 DSL 脚本将是 Kotlin DSL,而不是 Groovy DSL。

要在 Gradle 构建脚本中使用 Kotlin DSL,只需将文件命名为 build.gradle.kts,而不是 build.gradle。

使用 Kotlin DSL 的一个优点是它使语法提示更加准确,甚至在同步 build.gradle 文件之前就报告语法错误。

除此之外,开发人员还可以使用 Gradle 版本目录将所有应用程序的依赖项放在一个集中的位置,这对于可扩展性非常有帮助。

查看下面的链接:如果您正在寻找从 Groovy 迁移 Gradle 构建逻辑的方法。

https://docs.gradle.org/current/dsl/index.html

要查看示例,请在 Github 上查看 NowInAndroid项目。

https://github.com/android/nowinandroid

KSP(Kotlin符号处理器):优于Kapt(Kotlin注解处理工具)的更好选择

最初,Kapt是用于从Kotlin代码生成Java存根,允许以Java编写的注解处理器与Kotlin一起使用。

通过Kapt,注解处理变成了一个耗时的两步过程。
Kapt工作流程
KSP是对Kapt的一种以Kotlin为主的替代品,用于直接分析Kotlin代码。
KSP工作流程
KSP相对于Kapt有以下优势

  • 它速度提升了2倍,因为它不需要生成Java存根。
  • 类型更准确:因为它理解Kotlin语言的特定差异,如可空性。
  • 它具备多平台准备能力,因为它不依赖于Java源代码。
  • 要开始从Kapt迁移到KSP,请查阅以下官方迁移文档。

https://developer.android.com/build/migrate-to-ksp

Room、Glide、Moshi等热门库已经添加了对KSP的支持。而Dagger和Hilt尚未支持KSP。

Kotlin Multiplatform

Kotlin Multiplatform仍处于beta版本,处于实验阶段。谷歌正在将三个受欢迎的Jetpack库引入Kotlin Multiplatform生态系统中,它们是->AnnotationsCollectionsDataStore

我个人认为多平台是移动开发的未来。任何朝着这个方向迈出的一步都是正确的。

要了解在Kotlin Multiplatform中使用DataStore,请查看此kmm-samples存储库。

https://github.com/Kotlin/kmm-basic-sample

要关于Kotlin Multiplatform的内容,请阅读此官方文档。

https://developer.android.com/kotlin/multiplatform

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

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

相关文章

PMP®增持CSPM-2等级证书,免重新考试与学习,申请简单!

好消息!好消息!好消息! 2023年起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书…

前端和后端分别是什么?

从技术工具来看: 前端:常见的 html5、JavaScript、jQuery... 后端:spring、tomcet、JVM,MySQL... 毕竟,如果这个问题问一个老后端,他掰掰手指可以给你罗列出一堆的名词来,比如设计模式、数据库…

Golang gin middleware的编写与使用 context.Next函数

中间件 在web应用服务中,完整的一个业务处理在技术上包含客户端操作、服务器端处理、返回处理结果给客户端三个步骤。 在实际的业务开发和处理中,会有更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证、权限管理、安全检查、日志记录等多维度…

【软件分析/静态分析】chapter3 课程03/04 数据流分析的应用(Data Flow Analysis)

🔗 课程链接:李樾老师和谭天老师的:南京大学《软件分析》课程03(Data Flow Analysis I)_哔哩哔哩_bilibili 南京大学《软件分析》课程04(Data Flow Analysis II)_哔哩哔哩_bilibili 这篇文章总结…

识别一切模型RAM(Recognize Anything Model)及其前身 Tag2Text 论文解读

img 总览 大家好,我是卷了又没卷,薛定谔的卷的AI算法工程师「陈城南」~ 担任某大厂的算法工程师,带来最新的前沿AI知识和工具,欢迎大家交流~ 继MetaAI 的 SAM后,OPPO 研究院发布识别一切模型(Recognize Any…

MySQL如何保证数据的可靠性(保证数据不丢失)

1. 结论: 只要redo log 和 binlog 保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。 2. 机制 WAL机制,(Write Ahead Log): 事务先写入日志,后持久化到磁盘。 3. binlog…

华为OD机试真题 JavaScript 实现【非严格递增连续数字序列】【2022Q4 100分】

一、题目描述 输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度,比如122889属于非严格递增连续数字序列。 二、输入描述 输入一个字符串仅包含大小写字母和数字,输入的字符串最大不超过255个字符…

合金氢化物动力学与瞬时流量计算

在经典的合金氢化物动力学描述中,有一种是用JMAK方程来描述和拟合合金的吸放氢过程,方程很简洁:,其中是反应程度或者百分比,表示合金氢化物吸氢或者放氢的程度,是该合金吸氢或放氢的一种特征常数&#xff0…

57、基于51单片机智能硬币分拣分类机电子存钱罐报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+参考PPT+元器件清单等)

摘 要 近年来,随着我国经济的发展和社会的进步,邮政事业得到了空前发展。邮政通信网的技术含量不断增加,技术装备水平也在不断的提高,邮件处理已基本实现机械化,并且朝着自动化的方向迈进。本文着眼于我国当前邮政事…

Unity编辑器扩展-第一集-在菜单栏加入自己的按钮

一、概述 unity自己本身就是一个大的程序,我们看见的所有功能,都是用程序写出来的,但是根据各行各业不同的需求,有些时候我们制作时,想要自己编辑一些原有的功能。 二、本节目标效果展示 1.在菜单栏加入属于自己的一…

【前端基础篇】CSS选择器 和 CSS属性

前言:CSS 简介 CSS 概述 CSS ( Cascading Style Sheet ) 层叠样式表,用来修饰 HTML,使得效果更加多样化CSS 在 HTML4.0 中引入,一般在开发过程中,会使用单独的 CSS 文件进行开发,然后将这个独立 CSS 文件引…

Unity编辑器扩展-第二集-按钮排序/分组/放入右键菜单

第一集链接:Unity编辑器扩展-第一集-在菜单栏加入自己的按钮_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.按钮排序 变成 2.按钮分组 仔细看,有个灰色的杠杠 3.放入右键菜单 4.皮一下 二、按钮排序具体流程 第一集讲,如果想放入…

Java自定义泛型类、泛型接口、泛型方法以及 泛型擦除的细节

体会&#xff1a;使用泛型的主要优点是能够在编译时而不是在运行时检测错误。 /*** 自定义泛型类*/ public class Order<T> {String orderName;int orderId;//类的内部结构就可以使用类的泛型T orderT;public Order(){//编译不通过 // T[] arr new T[10];//编译…

Unity基础3——Resources资源动态加载

一、特殊文件夹 &#xff08;一&#xff09;工程路径获取 // 注意 该方式 获取到的路径 一般情况下 只在 编辑模式下使用 // 我们不会在实际发布游戏后 还使用该路径 // 游戏发布过后 该路径就不存在了 print(Application.dataPath);&#xff08;二&#xff09;Resources 资…

如何自动生成正交法测试用例?

目录 引言 正交法实验 自动生成正交用例 引言 正交法测试用例是一种高效且可靠的方法&#xff0c;能够最大限度地减少测试工作量&#xff0c;同时保证覆盖所有可能的组合情况。通过了解如何优化这些测试用例的生成过程&#xff0c;可以提高产品的质量&#xff0c;降低故障率…

机器人视觉梳理(上)

原创 | 文BFT机器人 01 机器人视觉的概念 在智能制造过程中&#xff0c;通过传统的编程来执行某一特定动作的机器人&#xff08;机械手、机械手臂、机械臂等&#xff0c;未作特殊说明时&#xff0c;不作严格区分&#xff0c;统一称为机器人&#xff09;&#xff0c;将难以满足制…

【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?

上一篇文章【CV大模型SAM&#xff08;Segment-Anything&#xff09;】真是太强大了&#xff0c;分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标中详细介绍了大模型SAM&#xff08;Segment-Anything&#xff09;的不同使用方法&#xff0c;后面有很多小伙伴给…

【JVM 监控工具】使用JConsole监控进程、线程、内存、cpu、类情况

文章目录 前言一、如何启动JConsole二、如何设置JAVA程序运行时可以被JConsolse连接分析三、JConsole如何连接远程机器的JAVA程序&#xff08;举例说明&#xff09;四、性能分析概述内存线程类VM摘要MBean 五、使用Jconsole监控某方法的性能总结 前言 Jconsole是JDK自带的监控…

网络工程师必备,华为/思科/华三交换机命令对比

本期对华为/思科/华三交换机配置命令对比,来看下他们的区别在哪里&#xff0c;这里对命令做了个汇总&#xff0c;平时对命令不熟的朋友这次可以看下。 另外我们来看下华为与H3C的命令情况&#xff0c;方便大家进行对比。 一、华为交换机基础配置命令 1、创建vlan&#xff1a; …

Unity基础1——3D数学

一、Mathf &#xff08;一&#xff09;Mathf 和 Math ​ Math 是 C# 中封装好的用于数学计算的工具类 —— 位于 System 命名空间中 ​ Mathf 是 Unity 中封装好的用于数学计算的工具结构体 —— 位于 UnityEngine 命名空间中 ​ 他们都是提供来用于进行数学相关计算的 ​…