bitristan / kotlin_dsl_primer

Some practice on kotlin dsl.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kotlin DSL Primer

概述

kotlin早已经在Android开发中普及了,不过目前大部分工程的gradle配置文件还是沿用之前的基于groovy的配置。是时候切换到kotlin DSL了,使用一种语言来进行开发和配置更为统一,也不需要经常去查groovy的语法。

相比groovy而言,kotlin的语法总体来讲有以下几个典型的不同

  • groovy中字符串可以用单引号或双引号,kotlin只能使用双引号
  • groovy方法调用可以省略括号,kotlin不能省略
  • groovy变量赋值可以省略括号,kotlin不能省略

groovy DSL切换到kotlin DSL

修改工程配置文件

settings.gradle文件重命名为settings.gradle.kts文件,修复语法错误

rootProject.name = "KotlinDslPrimer"

include ":app"
rootProject.name = "KotlinDslPrimer"

include(":app")

修改全局配置

  • 将根目录下的build.gradle文件重命名为build.gradle.kts文件
  • 将全局变量的定义挪出buildscript目录,并使用 kotlin语法重新定义
ext.kotlin_version = "1.5.20"
extra["kotlinVersion"] = "1.5.20"
  • 修复语法错误,主要是单引号改为双引号,方法调用和变量定义加括号
classpath "com.android.tools.build:gradle:4.2.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath("com.android.tools.build:gradle:4.2.2")
classpath(::"org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20")
  • clean task重新定义
task clean(type: Delete) {
    delete rootProject.buildDir
}
tasks {
    val clean by registering(Delete::class) {
        delete(buildDir)
    }
}

或者

task<Delete>("clean") {
    delete(rootProject.buildDir)
}

修改模块配置

  • plugins定义
plugins {
    id 'com.android.application'
    id 'kotlin-android'
}
plugins {
    id("com.android.application")
    kotlin("android")
}
  • buildTypes定义
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
buildTypes {
    getByName("release") {
        isMinifyEnabled = false
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
}
  • 语法错误修复(括号)

参考文档

About

Some practice on kotlin dsl.


Languages

Language:Kotlin 100.0%