在最新的Android Studio 上已经提供了默认的Kotlin工程的模板,但是这些简单的配置远不能满足一个复杂项目的构建要求,因此这里重新做下整理,搬运下Kotlin官方的内容。
1.如果Gradle 版本在2.1前可以使用以下引入方式。
1.1 在脚本文件下添加外部Gradle插件依赖引用
buildscript {
ext.kotlin_version = '1.2.61'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
1.2 应用Gradle Kotlin插件
在需要引入项目(可能你是多项目构建,模块)构建脚本下引入插件
apply plugin: "kotlin"
2.如果Gradle版为2.1或以上,则可以在对应需要引入的构建脚本下方便的使用plugins {}
脚本块进行快速引入(不需要再buildscript
中声名引入了)。
plugins {
id "org.jetbrains.kotlin.jvm" version "1.2.61" // 使用社区插件(非内置核心插件)方式引入,需要指定版本
}
plugins {}
默认是指向Gradle自己的https://plugins.gradle.org/m2
仓库,实测了下,maven依赖并不全,有时候会发现 not find 些依赖库。
解决这个问题可以在 settings.gradle
可以对 仓库地址进行配置下。(发现gralde插件还是会在一些比较老的仓库发布,作为备用,可以调整配置下)
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
Kotlin 插件默认将 src / main / kotlin /
和 src / main / java /
作为 srcDirs
路径
如果项目对默认路径做了调整,需要重新设置该信息
sourceSets {
main.kotlin.srcDirs += 'src/main/自己的目录' // 让 kotlin 知道哪些目录是存在kotlin代码源文件
}
在 Android Studio 中,还需要额外将kotlin目录添加到 main.java.srcDirs
中,以让IDE能正确识别这些目录为源目录。
android {
...
sourceSets {
main.java.srcDirs += 'src/main/kotlin' // 让 Android Studio 知道这些目录是存在代码文件的,自动识别,产生一些IDE的效果
}
}
在满足构建环境后,我们还需要配置一些在生产环境下,Kotlin代码需要使用的标准函数库,这里在对应的项目下引入标准库即可。
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib"
// compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7" // 如果仅需要支持 JDK7的话,直接使用这个
// compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8" // 如果仅需要支持 JDK8版本的话
}
关于其他的Kotlin库的支持,可以参照
https://kotlinlang.org/docs/reference/using-gradle.html#configuring-dependencies
在 Android 插件中,官方已经支持APT了。但是加入 Kotlin 后,由于Kotlin构建环节和Java 有些微妙的变化,因此需要重建这个流程的构建,因此Kotlin为我们提供了另外的插件支持。
和Kotlin插件引入类似,可以通过引入
apply plugin: 'kotlin-kapt'
或
plugins {
id "org.jetbrains.kotlin.kapt" version "1.2.61"
}
在本来使用 annotationProcessor
依赖方式的依赖上,改为 kapt
dependencies {
kapt 'groupId:artifactId:version'
}
kapt 不仅仅是会处理 kotlin 的内容,同时也可以处理 java 代码中的内容。
Kotlin 提供了另外一个配置变量,对APT插件进行配置。
kapt {
// apt变量注入
arguments {
arg("key", "value")
}
// javac 编译环境配置
javacOptions {
// Increase the max count of errors from annotation processors.
// Default is 100.
option("-Xmaxerrs", 500)
}
}
注意: kotlint apt 支持生成Kotlin源文件,生成的源文件默认在 processingEnv.options["kapt.kotlin.generated"]
路径下,在最终编译时,将会把这个目录下的源文件进行编译。
Kotlin 支持增量编译,可以通过 gradle.properties
进行配置
kotlin.incremental=true // 开启增量,否则 false
或者对 local.properties
进行命令行配置
-Pkotlin.incremental=true
协程是Kotlin实验性特性,如果需要使用该特性,对kotlin变量进行配置即可
kotlin {
experimental {
coroutines 'enable'
}
}