kotlin.jvm.internal.FunctionReference与Kotlin-kapt插件使用

来源:互联网 发布:linux命令view 编辑:程序博客网 时间:2024/05/18 01:46

1. 项目开发配置(展示)

  • AndroidStudio 2.3.2

  • Koltin 版本 ext.kotlin_version = '1.1.3-2'

  • Gradle 版本 com.android.tools.build:gradle:2.3.2,gradle-3.3-all.zip

2. 使用过程

在Kotlin 编写的项目使用Glide 的Generated API特性,需要在项目中通过kapt引入Glide的注解。

在项目中的Gralde中添加Glide v4和注解库的依赖:

//kapt添加的kotlinkapt {   generateStubs true}dependencies {    //Glide v4    compile 'com.github.bumptech.glide:glide:4.0.0-RC0'    //在Kotlin中Glide的注解,kapt是 Kotlin内置的注解处理器    kapt 'com.github.bumptech.glide:compiler:4.0.0-RC1'}

3. 运行结果

配置完成后,运行项目,给报错了,出现以下提示kotlin.jvm.internal.FunctionReference.

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.> kotlin.jvm.internal.FunctionReference.<init>(ILjava/lang/Object;)V

查询资料才知道,kapt3不在允许使用kapt {generateStubs true},而是使用kapt插件方式。

4. 解决方式

通过过添加kapt插件的方式来使用Kapt3.

在Gradle的中添加kotlin-kapt插件。

apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'//扩展插件apply plugin: 'kotlin-kapt'//kapt3插件dependencies {    //Glide v4    compile 'com.github.bumptech.glide:glide:4.0.0-RC0'    //在Kotlin中Glide的注解,kapt是 Kotlin内置的注解处理器    kapt 'com.github.bumptech.glide:compiler:4.0.0-RC1'}

当然,需要去掉kapt {generateStubs true}这行代码。

在Kotlin编程中,如何使用Glide v4,请阅读 Glide V4与OkHttp3自定义集成(Kotlin编程)。

Kotlin Kapt插件介绍


  • Java编程

    使用annotationProcessor引入注解处理库.

    例如:在Gralde中引入Glide v4的注解包。

    repositories {  mavenCentral()}dependencies {  annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1'}
  • Kotlin编程

    在Kotlin中使用Kapt引入注解处理库。

    例如: 在Gralde中引入Glide v4的注解包:

    kapt 'com.github.bumptech.glide:compiler:4.0.0-RC1'

    注意点,使用Kapt还需要添加kotlin-kapt插件。

    因此,使用kapt引入Glide v4完整代码如下:

    apply plugin: 'kotlin-kapt'//kapt3插件dependencies {   kapt 'com.github.bumptech.glide:compiler:4.0.0-RC1'}
  • Kotlin-kapt插件

    以下一些使用的注意事项。

    • 不要同时使用kapt 和annotationProcessor。
      若是项目中包含java代码,只使用kapt依旧会兼容到他们。

    • 不使用kapt { generateStubs true },它在Kapt3中不支持。

    • 使用apply plugin: 'kotlin-kapt'方式来添加kapt3。

    • 若是项目中以前使用android-apt 插件,需要从build.gradle移除。

参考资源

  • stackoverflow上解答:https://stackoverflow.com/questions/44769417/project-wont-build-with-kotlin-1-1-3

  • koltin官网中Kapt介绍: https://www.kotlincn.net/docs/reference/kapt.html

原创粉丝点击