Kotlin DSL 现已成为全新 Gradle 构建的默认设置

news2024/11/19 16:37:59

47f3d83d86450a1797218ac8cf55d6ce.png

作者 / Kotlin 产品经理 James Ward、开发者关系工程师 Boris Farber

四年来,Android 一直贯彻 "Kotlin 优先" 的原则,许多 Android 开发者已经做出了改变,陆续推出了效率更高、性能更稳定的应用。然而,尽管 Kotlin (build.gradle.kts) 语言已经在 Gradle 中存在多年,但定义构建的默认语言一直是 Groovy (build.gradle)。

现在,我们非常高兴地宣布将把构建脚本的默认语言切换为 Kotlin!这意味着 Kotlin 是所有项目代码的唯一默认语言,包括利用 Jetpack Compose 开发的用户界面,以及最新支持的构建脚本!在我们与 Gradle 和 JetBrains 团队的不懈努力下,终于为您带来这项改进。了解更多详情,您可以参阅相关公告: Gradle 博客;JetBrains 博客。

  • Jetpack Compose
    https://developer.android.google.cn/jetpack/compose

  • Gradle 博客
    https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds

  • JetBrains 博客
    https://blog.jetbrains.com/kotlin/2023/04/kotlin-dsl-is-the-default-for-new-gradle-builds/

这项改进不会影响使用 Groovy 语言的现有项目。这些项目将继续正常运行,暂无任何弃用计划。但如果您通过 Android Studio Giraffe 开始创建新项目或新模块,则将默认使用 Kotlin DSL。利用经过更新的项目模板,您可使用新的 Kotlin DSL 构建脚本轻松上手。如要迁移现有构建,您可以查看 Kotlin DSL 迁移指南:

https://developer.android.google.cn/studio/build/migrate-to-kts

虽然 Kotlin DSL 是创建新项目时的默认语言,但基于 Groovy DSL 的大型现有项目的迁移工作不可操之过急。Gradle、JetBrains 和 Google 正致力于进一步提高构建性能。这项工作正在进行中,我们将在取得进展时与您分享最新动态。具体而言,Kotlin DSL 的脚本编译性能慢于 Groovy DSL。然而,与 Groovy DSL 不同的是,Kotlin DSL 脚本编译结果存储在 Gradle 本地和远程缓存中,因此您无需在后续构建过程中重新编译。

推出这一改进有很多好处,为项目中的所有代码使用单一语言只是其中之一,让我们来看看使用 Kotlin DSL 构建 Gradle 的其他优势。

  • Kotlin 是静态类型语言,因此您在编辑 Kotlin DSL 构建脚本时可以获得快速而准确的代码提示:

56cf8177270f66812874cb467bd7fcae.gif

  • 检查语法错误功能更准确,且系统会在您编辑 Kotlin DSL 构建脚本时显示语法错误,而不是在尝试同步项目时显示:

5021fa9175a8047f9091f8b3d70b072d.gif

  • 按下 Control+Q (如果使用 macOS,则为 Command+B) 即可获取类型和方法文档。如果您需要更多详细信息,则可通过按下 Control 并单击鼠标左键 (如果使用 macOS,则是按下 Command 并单击鼠标左键) 转到底层源代码:

2ff429ccc238d706d3e793900dae9002.gif

  • 您可以在一个项目中混合使用 Groovy DSL 构建脚本和 Kotlin DSL 构建脚本,然后逐个模块进行迁移。您可借助此功能为新模块启用 Kotlin DSL,同时保留使用 Groovy 的现有模块。

我们还对新的项目模板进行了相关更改。这是一个实验性功能,可以支持您搭配使用 Gradle 版本目录与 Kotlin DSL 构建脚本。

637766cdc9e506b0fbe99ac7d1fd0df0.png

  • Gradle 版本目录
    https://docs.gradle.org/current/userguide/platforms.html

借助版本目录,您可使用集中化、可扩展的方式来定义项目的依赖项。虽然我们并不强制要求您使用版本目录,但其可在构建定义中提供更多类型安全性,是 Kotlin DSL 的完美搭档。

f584a7b9d4f110341f6df180a3d2b9b6.gif

您可以查看《迁移指南》,了解关于迁移到版本目录的更多信息:

https://developer.android.google.cn/studio/build/migrate-to-catalogs

新推出的 Kotlin DSL 默认更改现已可在 Android Studio Giraffe 预览版中使用。欢迎您即刻试用并与我们分享您的使用感受!也欢迎您持续关注 "Android 开发者" 微信公众号,及时了解更多开发技术和产品更新等资讯动态。

  • Android Studio Giraffe 预览版
    https://developer.android.google.cn/studio/preview

  • 与我们分享您的使用感受
    https://issuetracker.google.com/issues/new?component=192708&template=840533

eb6333049604ebdf851bcf81888ce6ee.gif

推荐阅读

如页面未加载,请刷新重试

c0c5badb3aedfbebe731111c756069fb.gif 点击屏末 阅读原文 | 即刻在 Android Studio Giraffe 预览版中使用


fe0f4096f5a6844fc1202bf9299babb9.png

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

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

相关文章

2023—Unity打包Pico4(3)全流程(Pico插件)

一、项目选择了2021.3.0版本的URP,把项目Build成Android 二、打开Project Setting→ 安装最下面的XR Plugin Management 安装完成后的界面,此时还没有Pico选项出现 三、我们需要在该网站下载Pico的SDK包 picoxr/VRTK-Support (github.com) 解压该文件到…

理解搜索引擎优化

我们需要了解搜索引擎如何对网站进行排名,并优化我们的网站以便于搜索引擎的抓取,这被称为SEO(搜索引擎优化)。 搜索引擎的工作分为三个阶段: •爬虫读取页面内容(HTML代码)并跟随超链接读取更多…

VR数字乡村:打造乡村振兴新通道,让乡村“走出去”

VR数字乡村是基于VR全景技术来振兴农村经济,并改善农村生活的一种发展模式。在建设数字化乡村的背景下,VR全景技术在改造升级农村农业、养殖管理、设备生产等多个方面都有积极的作用。 乡村振兴的难题就在于如何走出去,如何宣传自身&#xff…

聚观早报 |腾讯Q1营收重回两位数增长;特斯拉向印度政府提议建厂

今日要闻:腾讯Q1营收重回两位数增长;传特斯拉向印度政府提议建厂;ChatGPT创始人呼吁加强对AI监管;笑果被罚款1335万;药明康德联合创始人赵宁去世 腾讯Q1营收重回两位数增长 5 月 17 日,腾讯控股发布 2023 …

代理、正向代理与反向代理

一、代理 1.1 什么是代理 代理也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。例如:一些网关、路由器等…

C语言递归算法实现经典例题

一.递归 1.什么是递归 递归是一种编程技术,它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时,这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中,每个调用都会将一些数据保存在栈上,直到递…

【HISI IC萌新虚拟项目】Package Process Unit模块整体方案·PART1

1.背景 网络中包是个重要概念,很多信息在网络中以包的形式传输。而传输介质容易受到外界环境干扰导致传输错误,因此需要在传输过程中进行数据校验、过滤等包处理。包处理和包转发是信息传输的重要处理方式,本芯片实现简单的包处理和包转发机制。 包处理过程中需要用到缓存…

神经网络:Zero2Hero 1 - Simple Language Model

Zero → \to → Hero : 1 实现了一个字符级中文语言模型,数据采用的是开源中文姓名数据集中的一部分,主要内容如下: 字符的预处理 统计频次计算字符对频次矩阵 实现一个简单的先验概率模型 从训练数据中计算字符的先验概率根据先验概率通过…

渗透测试--4.捕获和监听数据

目录 目录 1.监听捕获数据方法 2.kali监听捕获工具介绍 arpspoof arpspoof实战(同一局域网断网实战) driftnet 实战使用drifnet和工具捕获网络图片 1、扫描目标主机,开启ip转发 2、打开ettercap 3、进行arp欺骗: 4、使用drif…

Gap Hours,我在内卷和摆烂之间的折中选择

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 粒粒 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 一个名词解释: Gap Day,是工作和生活中为了从不好的状态中跳脱出来,享受了躺平…

技术支持内容

平台技术简介: 前端:采用Vue、uni-app等技术。 后端:采用Spring Boot 。 权限:采用Jwt,支持多终端认证系统。 邮箱: postmasterzhonghuisoft.cn 平台基础功能: 用户管理: 管理…

常数整数乘法优化

常数整数乘法优化 文章目录 常数整数乘法优化基于正则有符号数的常数整数乘法优化Example 1: 20 x 20x 20xExample 2: 153 x 153x 153xExample 3: 15 x 15x 15x正则有符号数编码 CSD二进制序列转CSD编码算法流程代码实现欢迎关注公众号【三戒纪元】 嵌入式机器学习或深度学习…

人工智能的机器人技术为啥那么强,对于未来意味着什么?

前言 人工智能技术的发展,推动了机器人技术的不断进步。机器人技术在工业、医疗、服务等领域发挥着越来越重要的作用。本文将详细介绍人工智能的机器人技术。 机器人技术的发展历程 机器人技术的发展可以追溯到20世纪50年代。当时,机器人主要用于工业生…

怎么给移动硬盘查错?移动硬盘查错能恢复数据吗

移动硬盘在长期使用或使用不当的情况下,可能会出现硬盘文件损坏或者出现坏道等问题,影响数据安全和文件操作。这时候,移动硬盘查错工具就派上用场了。它可以帮助用户发现移动硬盘中的问题,并且还可以对移动硬盘进行修复。 但是&a…

chatgpt赋能Python-python3_7怎么改颜色

Python3.7中如何改变颜色的方法 Python是一门广泛应用于各种领域的编程语言,其强大的数据分析能力和简单易用的语法得到了越来越多的开发者的青睐。在Python中,要想使文本在输出时带有颜色,可以使用ANSI转义序列进行操作。 什么是ANSI转义序…

国考省考行测:数量关系,消三法,比,分数,百分数,n倍

国考省考行测: 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要的还是申论和行测,所以大家认真准备吧,我讲一起屡屡申论和行测的重要知识点 遇到寒冬&am…

spring数据校验:Validation

目录 Spring Validation概述 通过Validator接口实现 Bean Validation注解实现 基于方法实现校验 实现自定义校验 Spring Validation概述 在开发中,我们经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超…

从眼中窥视:Google AI 模型如何通过眼睛预测你的年龄

新的模型可以通过分析眼部照片揭示衰老的秘密 近年来,谷歌一直在研究各种人工智能模型,可以分析眼睛(内部和外部)的图像并监测某些参数。正如之前提到的,开发能够从眼睛中提取信息的 AI 模型意味着能够以经济高效和无创…

Array-Deque-Queue等的区别

🔎Deque(双端队列): Deque 是 “double-ended queue” 的缩写,表示双端队列。它是一种可以在两端进行插入和删除操作的数据结构。你可以在队列的头部和尾部同时进行插入和删除操作。Deque 接口定义了这些操作的方法,如…

国际博物馆日|科技与文化的碰撞:大势智慧助力博物馆赋能美好生活

近年来,我国博物馆事业蓬勃发展,而科技与文博领域的深度融合,将继续成为博物馆事业高质量发展的助推器。作为连接过去、现在、未来的桥梁和新时代文化交流与传播的窗口,博物馆不仅是保护和传承人类文明的重要殿堂,也是…