Mi clase de base de datos de aplicaciones
@Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract FavoritesDao favoritesDao();
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();
//Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
Gradle lib:
compile "android.arch.persistence.room:runtime:+"
annotationProcessor "android.arch.persistence.room:compiler:+"
Y cuando pregunto, por ejemplo, me dará este error, AppDatabase_Impl no existe en mi clase de aplicación
public class APp extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist
}
}
java
android
android-room
pratik deshai
fuente
fuente
Respuestas:
Para aquellos que trabajan con Kotlin , intente cambiar
annotationProcessor
akapt
las aplicacionesbuild.gradle
por ejemplo:
También recuerde agregar este complemento
en la parte superior del archivo build.gradle de nivel de aplicación y realice una limpieza y reconstrucción (de acuerdo con https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6 )
ACTUALIZAR
Si has migrado a androidx
fuente
apply plugin: 'kotlin-kapt'
a la parte superior delbuild.gradle
archivo de nivel de aplicaciónSolo usa
en la aplicación build.gradle
Y mantener ambos en dependencias
EDITAR
En la versión más reciente, no es necesario agregar ambas dependencias a la vez. Solo use, espero que funcione.
fuente
Tuve este error cuando perdí
Asegúrese de que el modelo de entidad especificado en la anotación anterior se refiere a la clase de modelo particular y también asegúrese de que la anotación necesaria:
está bien definido y estarías bien
fuente
si está utilizando clases de kotlin para implementar la base de datos, use
y
en su archivo gradle, funcionará.
fuente
No se trata solo de actualizar sus dependencias. Asegúrese de que todas las dependencias de su sala tengan la misma versión.
En el fragmento de muestra anterior, todas las dependencias de mi sala tienen la misma versión
1.1.0-alpha2
fuente
Para desarrolladores de Kotlin
Utilizar este:
Y agregue
apply plugin: 'kotlin-kapt'
a la parte superior del nivel de la aplicaciónbuild.gradle
.Para desarrolladores de Java
fuente
Encontré este problema porque olvidé las dependencias de apt
Después de agregar el AnnotationProcessor y reconstruirlo, el problema se resolvió.
fuente
Me encuentro con el problema, porque olvido la
@Dao
anotación.Tutorial oficial de sala
fuente
asegúrese de agregar la dependencia correcta para la habitación en build.gradle
Y debajo de la línea en la parte superior
fuente
La pregunta es bastante antigua, pero me he topado con esto hoy y ninguna de las respuestas proporcionadas me ayudó. Finalmente logré resolverlo notando que la documentación de Google en realidad todavía está adoptada en Java y no en Kotlin por defecto, en realidad han agregado un comentario que ignoré
Entonces, en lugar de
annotationProcessor "androidx.room:room-compiler:$room_version"
Si está desarrollando con Kotlin, debe usar:
fuente
Tuve el mismo problema Implementé las pocas clases e interfaz como se dijo oficialmente en un nuevo proyecto de ejemplo creado por Android Studio: https://developer.android.com/training/data-storage/room/
Todas las soluciones mencionadas anteriormente no ayudaron, los archivos necesarios _Impl de acuerdo con mi clase de base de datos no fueron generados por Room. Finalmente, ejecutar gradle clean build en la terminal me dio la pista que condujo a la solución:
"advertencia: el directorio de exportación de esquema no se proporciona al procesador de anotaciones, por lo que no podemos exportar el esquema. Puede proporcionar
room.schemaLocation
argumento del procesador de anotación O establecer exportSchema en falso".Agregué el parámetro exportSchema = false en la clase de base de datos
Y luego funcionó, encontró estos dos archivos generados en el módulo de la aplicación en generadoJava:
No entiendo este comportamiento ya que se dice que el parámetro es opcional, consulte https://stackoverflow.com/a/44645943/3258117
fuente
Use el siguiente enlace de gradle:
Necesita crear una clase de singloton diferente y obtener la base de datos de aplicaciones de esta manera:
RoomDB.java
App.java
fuente
En mi caso, estaba probando la conectividad para la base de datos de la sala y puse la clase de prueba dentro del directorio que he creado dentro de la carpeta AndroidTest. Lo saqué del directorio personalizado, luego funcionó bastante bien.
fuente
TestDatabase
en el código de lanzamiento.Se me ocurrió el mismo fenómeno.
siguiendo
Agregar provoca otro error de compilación pero rastrea la causa desde el registro.
En mi caso, hubo un error en la implementación de SQL. Después de arreglar, la construcción fue exitosa.
Por lo tanto, es posible que desee verificar la implementación de toda la biblioteca de la sala en lugar de mirar a los locales bloqueados.
fuente
El problema está más relacionado con la biblioteca correcta que no está incluida en la construcción de Gradle. Tuve un problema similar y agregué los que faltaban
fuente
Cambiar las dependencias en mi archivo gradle no me ayudó a corregir el error. Me había perdido esta anotación de la base de datos en la clase donde se inicializó la base de datos de la sala que estaba causando este problema.
Asegúrese de que el modelo de entidad especificado en la anotación anterior se refiere a la clase de modelo particular
fuente
Para mí, Android Studio actualizó automáticamente las dependencias tan pronto como incluyeste las importaciones relacionadas con la base de datos de Room. Pero según https://developer.android.com/jetpack/androidx/releases/room#declaring_dependencies necesita actualizar algunas. Así es como se ve mi código base:
AppDatabase.kt
Actualice build.gradle como se especifica en una de las respuestas:
Sincronice el gradle y debería estar listo para comenzar.
fuente
Leyendo el ejemplo aquí: Ejemplo de habitación
Solucioné este error simplemente usando la anotación correcta (supongo que es) ancessationProcessorFile, de la siguiente manera:
Además, actualicé a 2.2.0 en la versión Room como en la versión Lifecycle.
Una vez sincronizado el graddle, podría comenzar a trabajar con Room.
¡Buena suerte! ¡Y deja que el código te acompañe!
fuente
En mi aplicación kotlin, acabo de agregar la siguiente línea en la parte superior de mi archivo build.gradle:
Y la siguiente línea en la sección de dependencias:
Espero que solucione tu problema.
fuente
No en el caso de OP, pero esto también sucede cuando usa la implementación por error en lugar de un AnnotationProcessor como este:
En lugar de esto:
fuente