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

news/2024/5/20 5:02:07 标签: kotlin, android, android studio, gradle, 开发语言

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.niftyadmin.cn/n/339158.html

相关文章

微信小程序xr-frame后处理

前言:什么是后处理?(详见:ThreeJS 后处理 - 掘金 (juejin.cn)) 后处理就是对WebGLRenderer.render(scene, camera)的渲染2D图片进行处理。可以把多个后处理进行组合,按照顺序执行,每个处理过程…

【STL模版库】vector的介绍及使用 {构造函数,迭代器,容量相关接口,增删查改;动态二维数组}

一、vector的介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它…

Golang 安装

学习目标 本文旨在帮助初学者了解 Golang 在不同环境下的安装方法,并提供相关资源和参考链接。 学习内容 安装 Golang on Windows 下载 Golang for Windows 安装包,地址:https://golang.org/dl/双击运行安装包,按照提示完成安装。配置环境变量: 在系统变量中添加 GOROO…

全国自考本科通过率仅7%,为什么还有这么多人报考?

根据教育部官网公布的《2021年全国教育事业发展统计公报》得知:2021年,全国高等教育自学考试学历教育报考625.78万人次,取得毕业证书48.94万人。也就是说2021年我国自考平均通过率大概在7%左右。 自考通过率为什么这么低? ①自考…

gunicorn常用参数命令

Gunicorn 是一个 Python 的 WSGI HTTP 服务器。具有实现简单,轻量级,高性能等特点。更多介绍内容参考官网,这里介绍几个常用参数。 安装 pip3 install gunicorn通过输入gunicorn -v查看版本。 最简洁的启动。首先进入到项目目录,例如django项目和mana…

Mybatis-Plus 自动属性填充与自定义Insert into语句顺序

前言&#xff1a;系统中使用了Mybatis-Plus 自动属性填充为实体统一进行属性的填值&#xff0c;在Mapper的xml 文件中 insert into 语句 使用 <if test"id ! null">id,</if> 进行判断会发现该属性是空的&#xff0c;明明已经为改字段进行了属性的自动填充…

检索 COM 类工厂中 CLSID 为 {} 的组件失败, 内存资源不足,无法处理此命令

如果您收到ERROR_NOT_ENOUGH_MEMORY消息&#xff0c;提示没有足够的存储空间来处理此命令描述&#xff0c;请按照本文中列出的故障排除步骤进行修复。 此错误代码影响Windows服务器&#xff0c;导致系统崩溃&#xff0c;并在错误日志中显示“没有足够的存储空间来处理此命令”。…

vim 常用快捷键

vim 快捷键使用 区域选择&#xff1a; v: 字符选择&#xff0c;将光标经过的地方反白选择 V&#xff1a;行选择 y: 将反白的地方复制 d: 将反白的地方删除 光标移动&#xff1a; $: 移动到当前行行尾 gg: 光标跳转到第一行 G: 光标跳转到最后一行 字符操作&#xff1a; x…