将 build.gradle 配置从 Groovy 迁移到 Kotlin

目录

时间轴

常用术语

脚本文件命名

转换语法

为方法调用添加圆括号

为分配调用添加 =

转换字符串

重命名文件扩展名

将 def 替换为 val 或 var

为布尔值属性添加 is 前缀

转换列表和映射

配置 build 类型

从 buildscript 迁移到插件块

查找插件 ID

执行重构

转换 plugins 块

其他

已知问题

如何报告问题

更多资源


Android Gradle 插件 4.0 支持在 Gradle build 配置中使用 Kotlin,以替代 Groovy(Gradle 配置文件中通常使用的编程语言)。

在编写 Gradle 脚本方面,Kotlin 比 Groovy 更优,因为 Kotlin 更易于阅读,并且提供了更好的编译时检查和 IDE 支持。

虽然与 Groovy 相比,Kotlin 目前在 Android Studio 的代码编辑器中提供了更好的集成,但使用 Kotlin 的 build 往往比使用 Groovy 的 build 慢,因此在决定是否迁移时,请考虑 build 性能。

本页介绍了有关将 Android 应用的 Gradle build 文件从 Groovy 转换为 Kotlin 的基本信息。如需查看更全面的迁移指南,请参阅 Gradle 的官方文档

时间轴

注意 :从 Android Studio Giraffe 开始,Kotlin 是 build 配置的默认语言。如果您使用 AGP 8.1 和 Kotlin DSL 进行 build 配置,建议您使用 Gradle 8.1 以获得最佳体验。

从 Android Studio Giraffe 开始,新项目将默认使用 Kotlin DSL (build.gradle.kts) 进行 build 配置。与 Groovy DSL (build.gradle) 相比,这种方法具有语法突出显示、代码补全和声明导航等功能,可提供更好的修改体验。如需了解详情,请参阅 Gradle Kotlin DSL Primer

常用术语

Kotlin DSL:主要是指 Android Gradle 插件 Kotlin DSL,有时也指底层 Gradle Kotlin DSL

在本迁移指南中,“Kotlin”和“Kotlin DSL”可以互换使用。同样,“Groovy”和“Groovy DSL”可互换使用。

脚本文件命名

脚本文件扩展名取决于编写 build 文件所用的语言:

  • 用 Groovy 编写的 Gradle build 文件使用 .gradle 文件扩展名。
  • 用 Kotlin 编写的 Gradle build 文件使用 .gradle.kts 文件扩展名。

转换语法

Groovy 和 Kotlin 的语法之间存在一些普遍差异,因此您需要在 build 脚本中应用以下更改。

为方法调用添加圆括号

提示:首先,在更改文件扩展名之前,最好先在 Groovy 代码中添加圆括号。这样可以更轻松地转换为 Kotlin。

Groovy 允许您在方法调用中省略圆括号,而 Kotlin 则要求使用圆括号。如需迁移配置,请为这些类型的方法调用添加圆括号。以下代码展示了如何在 Groovy 中配置设置:

compileSdkVersion 30

以下是使用 Kotlin 编写的相同代码:

compileSdkVersion(30)

为分配调用添加 =

提示:在更改文件扩展名之前,请在 Groovy 代码中添加 =。这样可以更轻松地转换为 Kotlin。

Groovy DSL 允许您在分配属性时省略赋值运算符 =,而 Kotlin 则需要使用它。以下代码展示了如何在 Groovy 中分配属性:

java {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

以下代码展示了如何在 Kotlin 中分配属性:

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

转换字符串

以下是 Groovy 和 Kotlin 在字符串方面的差异:

  • 用于定义字符串的双引号:虽然 Groovy 允许使用单引号来定义字符串,但 Kotlin 要求使用双引号。
  • 基于句点表达式的字符串插值:在 Groovy 中,对于句点表达式的字符串插值,您可以仅使用“$”前缀,但 Kotlin 要求您用大括号将句点表达式括起来。例如,在 Groovy 中,您可以使用如以下代码段所示的 $project.rootDir

        myRoot
  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s_nshine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值