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())
    }
}

 

 


arrow
arrow

    顏澤偉 發表在 痞客邦 留言(0) 人氣()