问题综述:Kotlin下开启dataBinding导致GreenDao配置没有开启targetGenDir在调用greendao相关类的地方出现错误:
找不到符号
。具体原因我也不知道为什么,有知道的同学说一下!
Java环境下开启dataBinding(一点问题都没有)
app的build.gradle,如下:
android {
// MVVM框架所需,进行v和vm的双向自动响应的绑定
dataBinding {
enabled true
}
}
Kotlin环境下开启dataBinding
- 项目的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"
// ...
}
}
- 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类,但编译后就是错误:找不到符号
。