Gradle配置Kotlin环境

在最新的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'
    }
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值