問題綜述:Kotlin下開啟dataBinding導(dǎo)致GreenDao配置沒有開啟targetGenDir在調(diào)用greendao相關(guān)類的地方出現(xiàn)錯(cuò)誤:
找不到符號(hào)
台诗。具體原因我也不知道為什么,有知道的同學(xué)說(shuō)一下!
Java環(huán)境下開啟dataBinding(一點(diǎn)問題都沒有)
app的build.gradle近弟,如下:
android {
// MVVM框架所需渐尿,進(jìn)行v和vm的雙向自動(dòng)響應(yīng)的綁定
dataBinding {
enabled true
}
}
Kotlin環(huán)境下開啟dataBinding
- 項(xiàng)目的build.gradle配置历极,如下:
buildscript {
// kotlin和gradle的版本建議提取出來(lái)作為全局變量洒缀,如下所示
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框架所需具垫,進(jìn)行v和vm的雙向自動(dòng)響應(yīng)的綁定
dataBinding {
enabled true
}
// 注意開啟kotlin環(huán)境下的dataBinding 一定要指定targetGenDir叫惊,否則編譯不通過。
greendao {
//數(shù)據(jù)庫(kù)版本號(hào)
schemaVersion 1
// 設(shè)置DaoMaster做修、DaoSession霍狰、Dao 包名
daoPackage 'com.zkp.breath.database.greendao'
//設(shè)置DaoMaster、DaoSession饰及、Dao目錄,請(qǐng)注意蔗坯,這里路徑用/不要用.
targetGenDir 'src/main/java'
//設(shè)置為true以自動(dòng)生成單元測(cè)試。
generateTests false
//應(yīng)存儲(chǔ)生成的單元測(cè)試的基本目錄燎含。默認(rèn)為 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"
}
問題:當(dāng)你項(xiàng)目中有使用greendao的時(shí)候,
如果你沒有開啟targetGenDir(一定要開啟屏箍,默認(rèn)targetGenDir 'src/main/java'即可)
绘梦,就報(bào)會(huì)如下錯(cuò)誤:明明在默認(rèn)目錄下生成了DaoMaster橘忱,DaoSession,XXXDao類卸奉,但編譯后就是錯(cuò)誤:找不到符號(hào)
钝诚。