Kelas basis data aplikasi saya
@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;
}
}
Lib Gradle:
compile "android.arch.persistence.room:runtime:+"
annotationProcessor "android.arch.persistence.room:compiler:+"
Dan ketika saya meminta misalnya itu akan memberikan kesalahan ini, AppDatabase_Impl tidak ada di kelas aplikasi saya
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
sumber
sumber
Jawaban:
Bagi yang bekerja dengan Kotlin , coba ganti
annotationProcessor
kekapt
dalam aplikasibuild.gradle
sebagai contoh:
ingat juga untuk menambahkan plugin ini
ke bagian atas file build.gradle tingkat aplikasi dan lakukan pembersihan dan rekondisi (menurut https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6 )
MEMPERBARUI
Jika Anda telah bermigrasi ke Androidx
sumber
apply plugin: 'kotlin-kapt'
ke atasbuild.gradle
file tingkat aplikasiGunakan saja
di app build.gradle
Dan menjaga keduanya dalam dependensi
EDIT
Dalam versi yang lebih baru tidak perlu menambahkan kedua dependensi sekaligus. Cukup gunakan, harap ini akan berfungsi.
sumber
Saya memiliki kesalahan ini ketika saya gagal
Pastikan bahwa model entitas yang ditentukan dalam anotasi di atas mengacu pada kelas model tertentu dan juga memastikan bahwa anotasi yang diperlukan:
didefinisikan dengan benar dan Anda akan menjadi baik
sumber
jika Anda menggunakan kelas kotlin untuk mengimplementasikan basis data maka gunakan
dan
dalam file gradle Anda, itu akan berfungsi.
sumber
Ini bukan hanya tentang memperbarui dependensi Anda. Pastikan semua dependensi Kamar Anda memiliki versi yang sama.
Dalam cuplikan sampel di atas, semua dependensi Kamar saya memiliki versi yang sama
1.1.0-alpha2
sumber
Untuk Pengembang Kotlin
Gunakan ini:
Dan tambahkan
apply plugin: 'kotlin-kapt'
ke bagian atas tingkat aplikasibuild.gradle
.Untuk Pengembang Java
sumber
Saya menemui masalah ini karena saya lupa ketergantungan yang tepat
setelah menambahkan annotationProcessor, dan membangunnya kembali, masalah terpecahkan.
sumber
Saya menemui masalah, karena saya lupa
@Dao
anotasiRuangan tutorial Resmi
sumber
pastikan untuk menambahkan ketergantungan yang benar untuk kamar di build.gradle
Dan di bawah garis di atas-
sumber
Pertanyaannya cukup lama, tetapi saya menemukan ini hari ini dan tidak ada jawaban yang membantu saya. Akhirnya saya berhasil menyelesaikannya dengan memperhatikan bahwa dokumentasi google sebenarnya masih diadopsi ke Jawa dan bukan Kotlin secara default, sebenarnya mereka telah menambahkan komentar yang saya abaikan.
Jadi, bukannya
annotationProcessor "androidx.room:room-compiler:$room_version"
Jika Anda mengembangkan dengan Kotlin, Anda harus menggunakan:
sumber
Punya masalah yang sama. Menerapkan beberapa kelas dan antarmuka seperti yang secara resmi diceritakan dalam proyek contoh baru yang dibuat oleh Android Studio: https://developer.android.com/training/data-storage/room/
Semua solusi yang disebutkan di atas tidak membantu, file _Impl yang diperlukan sesuai dengan kelas database saya tidak dihasilkan oleh Room. Akhirnya menjalankan terminal build build gradle clean memberi saya petunjuk yang mengarah ke solusi:
"peringatan: Direktori ekspor skema tidak disediakan untuk prosesor anotasi sehingga kami tidak dapat mengekspor skema. Anda bisa memberikan
room.schemaLocation
argumen prosesor penjelasan atau ATAU mengatur exportSchema ke false."Saya menambahkan parameter exportSchema = false di kelas database
Dan kemudian berhasil, menemukan dua file yang dihasilkan ini dalam modul aplikasi di bawah generateJava:
Saya tidak mengerti perilaku ini karena parameternya dikatakan opsional, lihat https://stackoverflow.com/a/44645943/3258117
sumber
Gunakan tautan gradle berikut:
Anda perlu membuat kelas singloton diffretn dan mendapatkan Appdatabase dari sana seperti ini:
RoomDB.java
App.java
sumber
Dalam kasus saya, saya sedang menguji konektivitas untuk database kamar dan saya telah menempatkan kelas pengujian di dalam direktori yang telah saya buat di dalam folder AndroidTest. Saya telah memindahkannya dari direktori kustom, kemudian bekerja dengan cukup baik.
sumber
TestDatabase
kode rilis.Fenomena yang sama terjadi pada saya.
berikut
Menambahkan menyebabkan kesalahan build lain tetapi melacak penyebab dari log.
Dalam kasus saya, ada kesalahan dalam implementasi SQL. Setelah diperbaiki, build berhasil.
Jadi, Anda mungkin ingin memeriksa implementasi perpustakaan seluruh ruangan daripada melihat penduduk setempat yang jatuh.
sumber
Masalahnya lebih pada pustaka yang benar yang tidak termasuk dalam gradle build. Saya memiliki masalah yang sama dan menambahkan yang hilang
sumber
Mengubah dependensi dalam file gradle saya tidak membantu saya dalam memperbaiki kesalahan. Saya telah melewatkan anotasi Database ini di kelas tempat database Room diinisialisasi yang menyebabkan masalah ini.
Pastikan bahwa model entitas yang ditentukan dalam anotasi di atas mengacu pada kelas model tertentu
sumber
Bagi saya, Android Studio secara otomatis memperbarui dependensi segera setelah Anda memasukkan salah satu impor terkait basis data Kamar. Tetapi sesuai https://developer.android.com/jetpack/androidx/releases/room#declaring_dependencies Anda perlu memperbarui beberapa. Begini tampilannya basis kode saya:
AppDatabase.kt
Perbarui build.gradle sebagaimana ditentukan dalam salah satu jawaban:
Sinkronkan gradle dan Anda harus melakukannya dengan baik.
sumber
Baca contohnya di sini: Contoh Kamar
Saya memperbaiki kesalahan ini hanya menggunakan annotationProcessorFile yang benar (saya kira itu), sebagai berikut:
Juga, saya memutakhirkan ke 2.2.0 baik di Versi Kamar seperti di versi Siklus Hidup.
Setelah menyinkronkan graddle, saya bisa mulai bekerja dengan Room.
Jadi, Semoga Sukses! Dan biarkan kodenya menyertai Anda!
sumber
Di aplikasi kotlin saya, saya baru saja menambahkan baris berikut di bagian atas file build.gradle saya:
Dan baris berikut di bagian dependensi:
Saya harap ini memperbaiki masalah Anda.
sumber
Tidak dalam kasus OP, tetapi ini juga terjadi ketika Anda salah menggunakannya implementasi, bukan anotasiProcessor seperti ini:
Alih-alih ini:
sumber