Android 架构组件之Room数据库 处理Schema export Error
2017-12-05 22:51
603 查看
在使用 Android Room数据库的时候,虽然项目可以运行起来。
但是,却报以下error:
实际上,上面已经提示了开发者应该怎么处理,给出了两种方案。
解决方式一:
给RoomDatabase设置exportSchema注解为false。
解决方案二:
在项目中gradle中通过 annotationProcessorOptions 注解,为
当执行项目后,在Android Studio 的Project视图下,查看项目,会发现Module生成了一个schemas的文件夹,如下图所示:
其中,会生成版本1的Json文件,这里可以查看Room数据库的配置情况:
https://stackoverflow.com/questions/44322178/room-schema-export-directory-is-not-provided-to-the-annotation-processor-so-we
但是,却报以下error:
Error:(22, 17) 警告: 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.
实际上,上面已经提示了开发者应该怎么处理,给出了两种方案。
解决方式一:
给RoomDatabase设置exportSchema注解为false。
@Database(entities = { YourEntity.class }, version = 1, exportSchema = false) public abstract class MovieDatabase extends RoomDatabase { ... }
解决方案二:
在项目中gradle中通过 annotationProcessorOptions 注解,为
room.schemaLocation指定schemas的子文件夹。
android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId "com.xingen.architecturecomponents" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" //指定room.schemaLocation生成的文件路径 javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } } }
当执行项目后,在Android Studio 的Project视图下,查看项目,会发现Module生成了一个schemas的文件夹,如下图所示:
其中,会生成版本1的Json文件,这里可以查看Room数据库的配置情况:
{ "formatVersion": 1, "database": { "version": 1, "identityHash": "8240057b6178b803a0bf9915edf969ef", "entities": [ { "tableName": "movies", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `year` TEXT, `title` TEXT, `image` TEXT)", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "year", "columnName": "year", "affinity": "TEXT", "notNull": false }, { "fieldPath": "title", "columnName": "title", "affinity": "TEXT", "notNull": false }, { "fieldPath": "image", "columnName": "image", "affinity": "TEXT", "notNull": false } ], "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, \"8240057b6178b803a0bf9915edf969ef\")" ] } }
以上项目案例的连接: https://github.com/13767004362/ArchitectureComponentsDemo
资源参考:https://stackoverflow.com/questions/44322178/room-schema-export-directory-is-not-provided-to-the-annotation-processor-so-we
相关文章推荐
- Android架构组件Room的使用详解
- [置顶] Android架构组件Room介绍与使用
- android架构组件之Room
- Android架构组件Room的使用
- [译]Android架构组件 – 查看Room和LiveData – 第一部分
- Android架构组件Room指南
- Android架构组件Room的使用
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(第一部分)
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(第二部分)
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(补充部分二)
- 《解剖PetShop》系列之 一:系统架构设计 二:数据访问层之数据库访问设计 三:数据访问层之消息处理
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(补充部分二)
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- 使用hibernate的SchemaExport来创建数据库
- Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步
- 关于事务处理机制和原理、分布数据库设计架构与原理
- 获取数据库架构信息,GetSchema(),参数表
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(补充部分一)
- Delphi数据库处理组件BDE、ADO、InterBase和dbExpress详细说明
- 认识 yueue.ADOKeycap 开源数据库组件 - (在它基础上加入了事务的处理)