Room: el directorio de exportación de esquemas no se proporciona al procesador de anotaciones, por lo que no podemos exportar el esquema

Estoy utilizando el sitio de componentes de base de datos Android

He configurado todo, pero cuando compilar, Android Studio me da la advertencia

El directorio de exportación de esquemas no se proporciona al procesador de anotaciones, por lo que no podemos exportar el esquema. Puede proporcionar el argumento del procesador de anotación room.schemaLocation o establecer exportSchema como false.

Según entiendo, es la ubicación donde se localizará el archivo DB

¿Cómo puede afectar mi aplicación? ¿Cuál es la mejor práctica aquí? ¿Debo usar la ubicación predeterminada (valor false )?

En el archivo build.gradle para su módulo de aplicación, agregue esto a la sección defaultConfig (en la sección android ). Esto escribirá el esquema en una subcarpeta de schemas de su carpeta de proyecto.

 javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } 

Me gusta esto:

 // ... android { // ... (compileSdkVersion, buildToolsVersion, etc) defaultConfig { // ... (applicationId, miSdkVersion, etc) javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] } } } // ... (buildTypes, compileOptions, etc) } // ... 

Los docs dicen

Puede configurar el argumento del procesador de anotaciones (room.schemaLocation) para indicar a Room que exporte el esquema en una carpeta. Aunque no es obligatorio, es una buena práctica tener un historial de versiones en su codebase y debe confirmar ese archivo en su sistema de control de versiones (pero no lo envíe con su aplicación).

Así que si no necesita comprobar el esquema y desea deshacerse de la advertencia, sólo tiene que agregar RoomDatabase exportedSchema = false a su RoomDatabase , como sigue.

 @Database(entities = { YourEntity.class }, version = 1, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { ... } 

Si sigue @ mikejonesguy respuesta, seguirá la buena práctica mencionada en los documentos :). Básicamente obtendrá un archivo .json en su carpeta ../app/schemas/ . Y se ve algo así:

 { "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\")" ] } } 

Si mi comprensión es correcta, obtendrá un archivo con cada actualización de la versión de la base de datos, para que pueda seguir fácilmente el historial de su db.

  • Tengo un archivo keystore, ¿cómo puedo proporcionar keyManagers a sslContext en la aplicación de Android?
  • La API de Google Docs devuelve un servicio 503 no disponible al cargar un archivo. ¿Ha cambiado algo?
  • Tamaños de imagen compatibles con webcam
  • Appium logcat capture failed: spawn ENOENT (sin espacios en la ruta)
  • Problemas parcelables al ofuscar con Proguard
  • Cómo calcular la diferencia entre 2 fotogramas entrantes de la cámara (CV abierto)
  • ¿Por qué mi rendimiento aumenta al tocar la pantalla?
  • Cómo hacer que el arranque del emulador de Android sea más rápido
  • Se esperaba que GoogleApiClient.connect () 'fuera del tipo interface, pero se encontró que era virtual
  • Tipo 'jint' no se pudo resolver, y JNIEnv, jclass
  • R.string.XXX devuelve un int de strings.xml cuando necesito una String
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.