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
- PHP + Android XML Encryption / Decryption
- Java .equals () devuelve false cuando las cadenas son iguales
- Cuándo utilizar sincronizado en Java
- ¿Existen bibliotecas de análisis de PDF gratuitas que funcionen en Android?
- Eclipse + FindBugs - excluir archivos de filtro no funciona
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
)?
- ¿Cómo implementar diferentes eventos mediante un solo toque y doble toque en libgdx?
- Acceso a Android Wear Fit Data
- Android Studio AndroidManifest.xml vs build.gradle
- ¿Cuánto tiempo hace que se registró la última ubicación conocida?
- Compruebe la calidad de la imagen antes del OCR
- Descargar un pdf grande con jsoup
- HorizontalScrollView puede alojar sólo un hijo directo
- ¿Qué es un reemplazo adecuado para Android ActionBar?
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.
- Fragmento de NavigationDrawer con ListView y encabezado personalizado
- Google USB Package no se muestra en SDK Mananger