在最新的Android Studio 上已经提供了默认的Kotlin工程的模板,但是这些简单的配置远不能满足一个复杂项目的构建要求,因此这里重新做下整理,搬运下Kotlin官方的内容。
一、基本Kotlin环境配置
Import Plugin
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()
Set Source
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
三、APT支持
在 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'
在最新的Android Studio 上已经提供了默认的Kotlin工程的模板,但是这些简单的配置远不能满足一个复杂项目的构建要求,因此这里重新做下整理,搬运下Kotlin官方的内容。一、基本Kotlin环境配置Import Plugin1.如果Gradle 版本在2.1前可以使用以下引入方式。1.1 在脚本文件下添加外部Gradle插件依赖引用buildscript { ...
如果我们想学习Kotlin,那势必需要一个平台或者一种方法能够编译运行Kotlin代码。Kotlin官方教程提供了多种方式编译运行Kotlin代码,但个人认为这些方法依赖于IDE或者编辑器,直接使用命令行编译器也比较麻烦。官方教程最后提到可以使用构建工具构建Kotlin项目,鉴于学习Kotlin很大程度上是为了学习安卓开发,而在安卓开发中Gradle是非常重要的工具,所以这篇文章将介绍如何使用Gradle编译运行Kotlin代码,以作为学习Kotlin的入门准备。
首先,你必须对Grad
动态语言(python,groovy,javascript):需要有相应的动作来认定这个函数是干嘛的,运行的时候才知道
静态语言(kotlin,java):不需要了解其他的,创建就能知道它是什么,做什么用的(编译的时候就能知道)
idea新建gradle工程,使用kotlin语言的名称以kts为后缀的
设置kolin与java得混合调用
2. 代码展示:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.4.31"
repositories
第12章 使用 Kotlin 集成Gradle 开发
由于 Kotlin 具有丰富的功能,如一等函数和扩展方法等,因此它可以保留和改进 Gradle 构建脚本的最佳部分——包括简明的声明式语法以及轻松制作 DSL 的能力。
Gradle 团队与 Kotlin 团队密切合作,为 Gradle 开发了新的基于 Kotlin 脚本的构建配置语言,我们称之为 Gradle Script Kotlin,支持使用 Kotlin 编写构建和配置文件。同时,还支持在 IDE 中实现自动完成和编译检查等功能。有了Gradle
Gradle 是一种面向 JVM 平台的构建工具,而 Kotlin 则是一种运行在 JVM 上的静态类型编程语言。使用 Gradle 构建 Kotlin 项目可以帮助我们管理依赖、编译代码、运行测试等任务。
要在 Gradle 中使用 Kotlin,首先需要在项目中配置 Kotlin 插件。在 `build.gradle` 文件中,可以添加以下代码:
```kotlin
plugins {
id 'org.jetbrains.kotlin.jvm' version 'x.x.x' // Kotlin 插件版本
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:x.x.x" // Kotlin 标准库
repositories {
mavenCentral() // 仓库地址
然后,你可以编写 Kotlin 代码并使用 Gradle 进行构建。可以在 `src/main/kotlin` 目录下创建 Kotlin 文件,并在其中编写你的代码。
运行 `gradle build` 命令会编译你的 Kotlin 代码,并生成可执行的 JAR 文件或者其他输出形式,具体取决于你的项目配置。
希望这能回答你的问题!如果你还有其他疑问,请随时提问。