kotlin在android项目中,不光可以代替java文件进行逻辑上的编码,在项目构建中,也可以在build.gradle中使用:grdle kotlin scripts
首先需要将gradle的版本升级到4.10或者更高,确保androidStudio是3.0以上
我们先更改最外层的settings.gradle文件,需要先重命名成settings.gradle.kts
之后将
include':app'
改成
include (":app")
之后是build.gradle文件,先更改最外层工程的build,还是先重命名文件,改为build.gradle.kts
需要更改的有两处:
classpath"com.android.tools.build:gradle:4.0.1"
和
task clean(type: Delete){
delete rootProject.buildDir
}
具体更改思路:
classpath,maven函数都改成
classpath("xxx"),maven("xxx")即
classpath("com.android.tools.build:gradle:4.0.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10")
如果使用了maven{},需要将配置的url换成
maven{url = uri("https://xxxxxxxxx")}
task,稍微麻烦一点,需要改成tasks.register()
tasks.register("clean", Delete::class.java){
delete(rootProject.buildDir)
}
最后是app里的build.gradle,还是重命名成build.gradle.kts
先看plugin
applyplugin:'com.android.application'
apply plugin:'kotlin-android'
apply plugin:'kotlin-android-extensions'
更改成
plugins{
id("com.android.application")
id("kotlin-android")
id("kotlin-android-extensions")
}
由于内置了kotlin()函数,甚至可以更简写成
plugins{
id("com.android.application")
kotlin("android")
kotlin("android.extensions")
}
之后是android域下的
compileSdkVersion 30
defaultConfig{
applicationId"com.chip.kts"
minSdkVersion 23
targetSdkVersion 30
versionCode1
versionName"1.0"
testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"
}
更改成
compileSdkVersion(30)
defaultConfig{
applicationId ="com.chip.kts"
minSdkVersion(23)
targetSdkVersion(30)
versionCode =1
versionName ="1.0"
testInstrumentationRunner ="androidx.test.runner.AndroidJUnitRunner"
}
基本上都替换成了kotlin风格的赋值和函数
buildTypes相关:
buildTypes {
release{
minifyEnabledfalse
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
替换成
buildTypes {
getByName("release"){
isMinifyEnabled =false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro")
}
}
debug类似
productFlavors相关直接替换成:
productFlavors{
create("product"){
setDimension("enviroment") }
}
dependencies相关麻烦一点:
dependencies{
implementation fileTree(dir:"libs",include: ["*.jar"])
implementation'androidx.appcompat:appcompat:1.2.0'
}
更改成:
dependencies{
implementation(fileTree(mapOf("dir" to"libs","include" to listOf("*.jar"))))
implementation("androidx.appcompat:appcompat:1.2.0")
}
总结下来
文件名改成kts
' '替换成" "
新增“()”或者使用“=”赋值
网友评论