平时我们使用的Gradle文件,使用的语言是Groovy,现在,我们可以使用Kotlin来编写Gradle脚本了,优势如下。
类型 | Kotlin | Groovy |
---|---|---|
自动代码补全 | 支持 | 不支持 |
是否类型安全 | 是 | 不是 |
源码导航 | 支持 | 不支持 |
重构 | 自动关联 | 手动修改 |
接下来让我们新建一个项目,然后配置为kotlin脚本吧。
在新建的项目中,直接用Android Studio
的替换功能,将gradle文件中的将'
替换为"
app的build.gradle
修改为build.gradle.kts
同步代码,这个时候会报错
修改前
plugins { id("com.android.application") id("kotlin-android") } android { compileSdkVersion 30 defaultConfig { applicationId "com.heiko.mykotlindlstest" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "androidx.core:core-ktx:1.3.1" implementation "androidx.appcompat:appcompat:1.2.0" implementation "com.google.android.material:material:1.2.1" implementation "androidx.constraintlayout:constraintlayout:2.0.1" testImplementation "junit:junit:4.+" androidTestImplementation "androidx.test.ext:junit:1.1.2" androidTestImplementation "androidx.test.espresso:espresso-core:3.3.0" }
修改后
plugins { id("com.android.application") id("kotlin-android") //kotlin("android") //kotlin("kapt") } android { compileSdkVersion(30) defaultConfig { applicationId("com.heiko.mykotlindlstest") minSdkVersion(21) targetSdkVersion(30) versionCode(1) versionName("1.0") testInstrumentationRunner("androidx.test.runner.AndroidJUnitRunner") } buildTypes { named("release") { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { val kotlin_version = "1.5.10" implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") implementation("androidx.core:core-ktx:1.3.1") implementation("androidx.appcompat:appcompat:1.2.0") implementation("com.google.android.material:material:1.2.1") implementation("androidx.constraintlayout:constraintlayout:2.0.1") testImplementation("junit:junit:4.+") androidTestImplementation("androidx.test.ext:junit:1.1.2") androidTestImplementation("androidx.test.espresso:espresso-core:3.3.0") }
接着,我们运行项目,可以发现可以正常运行了。
同理,我们也可以修改其他文件。
修改前的根目录的build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.5.10" repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:4.2.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() mavenCentral() jcenter() // Warning: this repository is going to shut down soon } } task clean(type: Delete) { delete rootProject.buildDir }
修改后的更目录build.gradle
,改名为修改为build.gradle.kts
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { val kotlin_version = "1.5.10" repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:4.2.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() mavenCentral() jcenter() //maven(url = "https://jitpack.io") } } tasks { val clean by registering(Delete::class) { delete(buildDir) } }
修改前的settings.gradle
rootProject.name = "MyKotlinDLSTest" include ':app'
修改后的settings.gradle
,更名为settings.gradle.kts
rootProject.name = "MyKotlinDLSTest" include(":app")
再次运行,可以发现也正常运行 !
感谢 Kotlin Jetpack 实战 | 02. Gradle Kotlin DSL