당으로 문서 :
주석 프로세서 인수 (room.schemaLocation)를 설정하여 Room에 스키마로 폴더를 내보내도록 지시 할 수 있습니다. 필수는 아니지만 코드베이스에 버전 기록이있는 것이 좋으며 해당 파일을 버전 제어 시스템에 커밋해야합니다 (그러나 앱과 함께 제공하지는 마십시오!).
따라서 스키마를 확인할 필요가없고 경고를 제거하려면 다음과 같이을 추가 exportSchema = false
하십시오 RoomDatabase
.
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
//...
}
아래의 @mikejonesguy 답변 을 따르면 문서에 언급 된 모범 사례를 따릅니다. :). 기본적으로 폴더에 .json
파일이 있습니다 ../app/schemas/
. 그리고 다음과 같이 보입니다 :
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "53db508c5248423325bd5393a1c88c03",
"entities": [
{
"tableName": "sms_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` TEXT, `date` INTEGER, `client_id` INTEGER)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER"
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT"
},
{
"fieldPath": "date",
"columnName": "date",
"affinity": "INTEGER"
},
{
"fieldPath": "clientId",
"columnName": "client_id",
"affinity": "INTEGER"
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"53db508c5248423325bd5393a1c88c03\")"
]
}
}
내 이해가 정확하면 모든 데이터베이스 버전 업데이트와 함께 그러한 파일을 얻을 수 있으므로 DB 기록을 쉽게 따를 수 있습니다.