Kotlin开启dataBinding后导致GreenDao调用出编译出错

问题综述:Kotlin下开启dataBinding导致GreenDao配置没有开启targetGenDir在调用greendao相关类的地方出现错误:找不到符号。具体原因我也不知道为什么,有知道的同学说一下!

Java环境下开启dataBinding(一点问题都没有)

app的build.gradle,如下:

android {
    // MVVM框架所需,进行v和vm的双向自动响应的绑定
    dataBinding {
        enabled true
    }
}
Kotlin环境下开启dataBinding
  1. 项目的build.gradle配置,如下:
buildscript {
    // kotlin和gradle的版本建议提取出来作为全局变量,如下所示
    ext.kotlin_version = '1.3.61'
    ext.gradle_version = '3.6.1'
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // ...
    }
}
  1. app的build.gradle,如下:
// ...
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    // ...

    // MVVM框架所需,进行v和vm的双向自动响应的绑定
    dataBinding {
        enabled true
    }

    // 注意开启kotlin环境下的dataBinding 一定要指定targetGenDir,否则编译不通过。
    greendao {
        //数据库版本号
        schemaVersion 1
        // 设置DaoMaster、DaoSession、Dao 包名
        daoPackage 'com.zkp.breath.database.greendao'
        //设置DaoMaster、DaoSession、Dao目录,请注意,这里路径用/不要用.
        targetGenDir 'src/main/java'
        //设置为true以自动生成单元测试。
        generateTests false
        //应存储生成的单元测试的基本目录。默认为 src / androidTest / java。
        //targetGenDirTests 'src/androidTest/java'
    }

}


dependencies {
    // ...

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    kapt "androidx.databinding:databinding-compiler-common:$gradle_version"
}

问题:当你项目中有使用greendao的时候,如果你没有开启targetGenDir(一定要开启,默认targetGenDir 'src/main/java'即可),就报会如下错误:明明在默认目录下生成了DaoMaster,DaoSession,XXXDao类,但编译后就是错误:找不到符号

Kotlin开启dataBinding后导致GreenDao调用出编译出错_第1张图片
image.png

你可能感兴趣的:(Kotlin开启dataBinding后导致GreenDao调用出编译出错)