什么?你还在使用Java编写Android程序?不知道Google已经宣布Kotlin是官方语言了吗?
好吧,还是有一些人仍然在执着于Java。现在列举一些Kotlin的好处。
- Kotlin代码好看一些
- 大多数变量或常量都可以通过推断来知道变量或常量类型
- 函数式编程
- 空指针安全
- Kotlin的向下支持可以使你用JDK 1.6就能享受到Java 9以上的语言特性
- 100%兼容Java
所以,还是用Kotlin吧。
还有,如果你使用Android Studio进行编写,那么你应该知道整个工程都使用Gradle进行项目构建。Gradle的配置文件bulid.gradle
是用的Groovy编写的,相比于Kotlin它的可读性很差,而且没有IDE上的类型推断支持。得益于Kotlin DSL的支持,你可以将文件重命名为build.gralde.kts
,然后将里面的代码全部改写成Kotlin,就好看多了。
在此我放一个模板:
// build.gradle.kts
buildscript {
repositories {
// maven仓库用法:maven(url)
mavenCentral()
jcenter()
google()
}
dependencies {
classpath("com.android.tools.build:gradle:4.2.0-alpha07")
classpath(kotlin("gradle-plugin", version = "1.4.10"))
}
}
allprojects {
repositories {
mavenCentral()
jcenter()
google()
}
}
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}
// app/build.gradle.kts
// 你还可以定义val或者var
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
kotlin("plugin.serialization") version "1.4.0"
}
android {
compileSdkVersion(30)
defaultConfig {
applicationId = "com.example.example"
minSdkVersion(26)
targetSdkVersion(30)
versionCode = 1
versionName = "1.0.0-alpha1"
}
buildTypes {
getByName("debug") {
isMinifyEnabled = false
}
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.findByName("github")
}
}
// 这样可以在src/mian里面使用kotlin文件夹啦~
sourceSets["main"].java.srcDir("src/main/kotlin")
// 使用Java 8
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions.jvmTarget = "1.8"
// ViewBinding
buildFeatures.viewBinding = true
}
dependencies {
// settings.gradle.kts
include(":app")