未向批注处理器提供文件室-架构导出目录,因此无法导出架构

我正在使用Android数据库组件室

我已经配置了所有内容,但当我编译时,Android Studio给了我以下警告:

架构导出目录未提供给批注处理器,因此
我们无法导出架构。你可以提供
room.schemaLocation注释处理器参数或集合
exportSchema为false

据我所知,它是DB文件的位置

它如何影响我的应用程序?这里的最佳实践是什么?我是否应该使用默认位置(false值)

根据文档

您可以设置注释处理器参数(room.schemaLocation)来告诉room将架构导出到文件夹中。尽管它不是强制性的,但在代码库中有版本历史记录是一种很好的做法,您应该将该文件提交到您的版本控制系统中(但不要随应用程序一起提供!)

因此,如果您不需要检查模式,并且希望消除警告,只需将exportSchema=false添加到RoomDatabase,如下所示

@数据库(entities={YourEntity.class},版本=1,exportSchema=false)
公共抽象类AppDatabase扩展了RoomDatabase{
//...
}

如果您遵循@mikejonesguy回答下面,您将遵循文档中提到的良好实践:)。
基本上,您将在./app/schemas/文件夹中获得一个.json文件。
它看起来像这样:

{
“格式版本”:1,
“数据库”:{
“版本”:1,
“identityHash”:“53db508c5248423325bd5393a1c88c03”,
“实体”:[
{
“表名”:“sms_表”,
“createSql”:“创建表(如果不存在)`${TABLE\u NAME}`(`id`INTEGER主键自动递增,`message`TEXT,`date`INTEGER,`client\u id`INTEGER)”,
“字段”:[
{
“字段路径”:“id”,
“columnName”:“id”,
“关联”:“整数”
},
{
“字段路径”:“消息”,
“columnName”:“消息”,
“关联”:“文本”
},
{
“字段路径”:“日期”,
“columnName”:“日期”,
“关联”:“整数”
},
{
“字段路径”:“客户端ID”,
“columnName”:“客户id”,
“关联”:“整数”
}
],
“primaryKey”:{
“列名称”:[
“id”
],
“自动生成”:真
},
“指数”:[],
“外国钥匙”:[]
}
],
“设置查询”:[
“如果不存在文件室\u主\u表(id整数主键,标识\u哈希文本),则创建表”,
“将值(42,\“53db508c5248423325bd5393a1c88c03\”)插入或替换到文件室\u主\u表(id,标识\u散列)中”
]
}
}

如果我的理解是正确的,那么每次数据库版本更新都会得到这样一个文件,这样您就可以轻松地跟踪数据库的历史记录

发表评论