close
這是在做 Room 的時候可能會遇上的問題
內容如下:
Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide room.schemaLocation annotation processor argument OR set exportSchema to false.
問題的原因其實就是 Room 要 export 資料庫的 schema
但我們並沒有告訴他要存放在哪,導至這個錯誤發生
提示說明得也很清楚
有兩個方法可以解決
第一個就是不要 export
在 @Database 中,加上 exportSchema = false 即可,如下
@Database(entities = [LiveTourEntity::class] , version = 1 , exportSchema = false) @TypeConverters(Converters::class) abstract class AppDatabase : RoomDatabase() { 。。。 }
第二就是指定路徑給它
在 app/build.gradle 中設定下面這段
android { 。。。 defaultConfig { 。。。 javaCompileOptions { annotationProcessorOptions { // 將 DB schema export 在 app/schemas 路徑下 arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } } }
這麼一來就可以在 app/schemas 下面找到一個 .json 的檔案
裡面會記錄我們 DB 的 Schema 喔
Kotlin 使用 kapt 的可以這樣寫
kapt { arguments { // 將 DB schema export 在 app/schemas 路徑下 arg("room.schemaLocation", "$projectDir/schemas".toString()) } }
文章標籤
全站熱搜