Ma classe de base de données d'application
@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:+"
Et quand je demande par exemple cela donnera cette erreur, AppDatabase_Impl n'existe pas dans ma classe d'application
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
la source
la source
Réponses:
Pour ceux qui travaillent avec Kotlin , essayez de passer
annotationProcessor
àkapt
dans les applicationsbuild.gradle
par exemple:
n'oubliez pas d'ajouter ce plugin
en haut du fichier build.gradle au niveau de l'application et effectuez un nettoyage et une reconstruction (selon https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6 )
METTRE À JOUR
Si vous avez migré vers androidx
la source
apply plugin: 'kotlin-kapt'
en haut dubuild.gradle
fichier au niveau de l'applicationJuste utiliser
dans l'application build.gradle
Et gardez les deux dans les dépendances
ÉDITER
Dans la version plus récente, il n'est pas nécessaire d'ajouter les deux dépendances à la fois. Utilisez simplement, j'espère que cela fonctionnera.
la source
J'ai eu cette erreur quand j'ai raté
Assurez-vous que le modèle d'entité spécifié dans l'annotation ci-dessus fait référence à la classe de modèle particulière et assurez-vous également que l'annotation nécessaire:
est bien défini et vous seriez bien
la source
si vous utilisez des classes kotlin pour implémenter la base de données, utilisez
et
dans votre fichier gradle, cela fonctionnera.
la source
Il ne s'agit pas seulement de mettre à jour vos dépendances. Assurez-vous que toutes vos dépendances de salle ont la même version.
Dans l'exemple d'extrait ci-dessus, toutes mes dépendances de salle ont la même version
1.1.0-alpha2
la source
Pour les développeurs Kotlin
Utilisez ceci:
Et ajoutez
apply plugin: 'kotlin-kapt'
au sommet du niveau de l'applicationbuild.gradle
.Pour les développeurs Java
la source
J'ai rencontré ce problème car j'ai oublié les dépendances apt
après avoir ajouté l'annotationProcessor et le reconstruire, le problème est résolu.
la source
Je rencontre le problème, car j'oublie l'
@Dao
annotationTutoriel officiel de la salle
la source
assurez-vous d'ajouter une dépendance correcte pour la pièce dans build.gradle
Et en dessous de la ligne en haut-
la source
La question est assez ancienne, mais je suis tombée dessus aujourd'hui et aucune des réponses fournies ne m'a aidé. Enfin, j'ai réussi à le résoudre en remarquant que la documentation Google est toujours adoptée par défaut par Java et non par Kotlin, en fait, ils ont ajouté un commentaire que j'ai ignoré
Donc, au lieu de
annotationProcessor "androidx.room:room-compiler:$room_version"
Si vous développez avec Kotlin, vous devez utiliser:
la source
Avait le même problème. Implémentation des quelques classes et interfaces comme indiqué officiellement dans un nouvel exemple de projet créé par Android Studio: https://developer.android.com/training/data-storage/room/
Toutes les solutions mentionnées ci-dessus n'ont pas aidé, les fichiers _Impl nécessaires selon ma classe de base de données n'ont pas été générés par Room. Enfin, l'exécution de gradle clean build dans le terminal m'a donné l'indication qui a conduit à la solution:
"avertissement: le répertoire d'exportation du schéma n'est pas fourni au processeur d'annotations, nous ne pouvons donc pas exporter le schéma. Vous pouvez soit fournir l'
room.schemaLocation
argument du processeur d'annotation OU définir exportSchema sur false."J'ai ajouté le paramètre exportSchema = false dans la classe de base de données
Et puis cela a fonctionné, j'ai trouvé ces deux fichiers générés dans le module d'application sous generatedJava:
Je ne comprends pas ce comportement car le paramètre est dit facultatif, voir https://stackoverflow.com/a/44645943/3258117
la source
Utilisez le lien gradle suivant:
Vous devez créer une classe singloton diffretn et obtenir l'Appdatabase comme ceci:
RoomDB.java
App.java
la source
Dans mon cas, je testais la connectivité pour la base de données de la salle et j'ai mis la classe de test dans le répertoire que j'ai créé dans le dossier AndroidTest. Je l'ai déplacé hors du répertoire personnalisé, puis cela a plutôt bien fonctionné.
la source
TestDatabase
dans le code de version.Le même phénomène m'est venu à l'esprit.
Suivant
L'ajout provoque une autre erreur de construction mais en suit la cause à partir du journal.
Dans mon cas, il y a eu une erreur dans l'implémentation SQL. Après la correction, la construction a réussi.
Vous voudrez peut-être vérifier la mise en œuvre de toute la bibliothèque de la salle au lieu de regarder les habitants en panne.
la source
Le problème concerne davantage la bibliothèque correcte qui n'est pas incluse dans la version gradle. J'ai eu un problème similaire et j'ai ajouté le manquant
la source
Changer les dépendances dans mon fichier gradle ne m'a pas aidé à corriger l'erreur.J'avais manqué cette annotation de base de données dans la classe où la base de données de la salle a été initialisée, ce qui causait ce problème.
Assurez-vous que le modèle d'entité spécifié dans l'annotation ci-dessus fait référence à la classe de modèle particulière
la source
Pour moi, Android Studio a automatiquement mis à jour les dépendances dès que vous incluez l'une des importations liées à la base de données Room. Mais selon https://developer.android.com/jetpack/androidx/releases/room#declaring_dependencies vous devez en mettre à jour quelques-uns. Voici à quoi ressemble ma base de code:
AppDatabase.kt
Mettez à jour build.gradle comme spécifié dans l'une des réponses:
Synchronisez le gradle et vous devriez être prêt à partir.
la source
Lire l'exemple ici: Exemple de pièce
J'ai corrigé cette erreur en utilisant simplement le bon (je suppose que c'est) annotationProcessorFile, comme suit:
De plus, je suis passé à la version 2.2.0 soit dans la version de la salle, soit dans la version Lifecycle.
Une fois le graddle synchronisé, je pourrais commencer à travailler avec Room.
Alors bonne chance! Et laissez le code être avec vous!
la source
Dans mon application kotlin, je viens d'ajouter la ligne suivante en haut de mon fichier build.gradle:
Et la ligne suivante dans la section des dépendances:
J'espère que cela résout votre problème.
la source
Pas dans le cas de OP, mais cela se produit également lorsque vous utilisez par erreur implémentation au lieu d' annotationProcessor comme ceci:
Au lieu de cela:
la source