写点什么

Gradle 指南之从 Groovy 迁移到 Kotlin,2021 国内知名大厂 Android 岗面经

用户头像
Android架构
关注
发布于: 刚刚

更多信息可以看这个回答:configuration-on-demand-is-not-supported


确认 sync 成功后,接下来就可以正式进行 Kotlin DSL 迁移了


步骤二. 使用 Kotlin 重写 Groovy


需要注意的地方是:

  • Groovy DSL script files use the .gradle file name extension.

  • Kotlin DSL script files use the .gradle.kts file name extension.


这里,我直接对原有的 build.gradle 脚本通过重命名的方式,修改为 build.gradle.kts 的后缀名,可能会提示有冲突,这里不用管,直接点击 continu,然后你会发现脚本里一片飙红,不用担心,之前的 Groovy 语法在 Kotlin 报错了而已,推荐全部删掉,然后对照着用 Kotlin 重新写一遍,这样,会印象深刻一些。


这里以一个比较简单的示例工程说明一下:



我们分别对根目录的 settting.gradlebuild.gradle 以及 app 目录下的 build.gradle 进行重写,以我的操作路径为例(不同操作路径,可能遇到的问题不一样):


app/build.gradle -> setting.gradle -> build.gradle


说下几个需要注意的地方:


需要说明的一点,目前 Gradle 官方是支持 Groovy 脚本和 Kotlin 并存的,虽然我感觉支持的并不太好


1. android 配置项无法自动被识别出来,如图所示:



解决办法:不用管,直接写一个配置项出来,然后 sync 同步一下就可以了,如图:



2. signconfig release 配置变更


signingConfigs {create("release") {storeFile = file("your keystore path")storePassword = "your password"keyAlias = "your alias"keyPassword = "your password"}getByName("debug") {storeFile = file("your keystore path")storePassword = "your password"keyAlias = "your alias"keyPassword = "your password"}}


3. 重命名生成的 apk 文件名


大部分开发当中应该都会有对输出的 apk 有重命名的需求,原来我在 Groovy 中是通过:


applicationVariants.all { variant ->variant.outputs.all {outputFileName = "{flavors}@app_versionName}.apk"}}


迁移到 Kotlin 发现无法直接使用 outputFileName 的属性了


解决办法:显式转为具体实现类


android.applicationVariants.all {outputs.all {if (this is ApkVariantOutputImpl) {this.outputFileName = "flavors@app_versionName.apk"}}}


4. setting.gradle 配置指定 build.gradle.kts


rootProject.buildFileName = "build.gradle.kts"


include("app")


好了,如果你没遇到其他问题的话,到这里基本就已经大


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


功告成了!

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Gradle指南之从Groovy迁移到Kotlin,2021国内知名大厂Android岗面经