내 앱 데이터베이스 클래스
@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:+"
그리고 예를 들어 요청할 때이 오류가 발생합니다. 응용 프로그램 클래스에 AppDatabase_Impl이 없습니다.
public class APp extends Application {
private boolean appRunning = false;
@Override
public void onCreate() {
super.onCreate();
AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist
}
}
답변
작업 사람들을 위해 코 틀린 변화 시도 annotationProcessor
에 kapt
애플 리케이션에build.gradle
예를 들면 다음과 같습니다.
// Extensions = ViewModel + LiveData
implementation "android.arch.lifecycle:extensions:1.1.0"
kapt "android.arch.lifecycle:compiler:1.1.0"
// Room
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
이 플러그인을 추가해야합니다
apply plugin: 'kotlin-kapt'
깨끗한을하고 다시 응용 프로그램 레벨 build.gradle 파일의 상단에와 (에 따라 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6 )
Android Studio에서 코드를 붙여 넣거나 빌드 프로세스 중에 오류가 발생하면 빌드> 프로젝트 정리를 선택하십시오. 그런 다음 빌드> 프로젝트 다시 빌드를 선택한 다음 다시 빌드하십시오.
최신 정보
androidx로 마이그레이션 한 경우
def room_version = "2.2.3" // check latest version from docs
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
답변
그냥 사용
apply plugin: 'kotlin-kapt'
앱 build.gradle에서
그리고 의존성을 유지하십시오
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
kapt "android.arch.persistence.room:compiler:$rootProject.roomVersion"
편집하다
최신 버전에서는 한 번에 두 가지 종속성을 모두 추가 할 필요가 없습니다. 그냥 사용하십시오.
kapt 'android.arch.persistence.room:compiler:1.1.1'
답변
보고 싶을 때이 오류가 발생했습니다
@Database(entity="{<model.class>})
위 주석에 지정된 엔티티 모델이 특정 모델 클래스를 참조하는지 확인하고 필요한 주석이 있는지 확인하십시오.
@Entity(tableName = "<table_name>" ...)
제대로 정의되었고 당신은 좋을 것입니다
답변
kotlin 클래스를 사용하여 데이터베이스를 구현하는 경우
apply plugin: 'kotlin-kapt'
과
kapt "android.arch.persistence.room:compiler:1.1.1"
gradle 파일에서 작동합니다.
답변
의존성을 업데이트하는 것이 아닙니다. 모든 룸 종속성이 동일한 버전인지 확인하십시오.
implementation 'android.arch.persistence.room:rxjava2:1.1.0-alpha2'
implementation 'android.arch.persistence.room:runtime:1.1.0-alpha2'
annotationProcessor "android.arch.persistence.room:compiler:1.1.0-alpha2"
위의 샘플 스 니펫에서 모든 내 룸 종속성의 버전이 동일합니다 1.1.0-alpha2
답변
코 틀린 개발자를위한
이것을 사용하십시오 :
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"
그리고 apply plugin: 'kotlin-kapt'
앱 레벨 상단에 추가하십시오 build.gradle
.
자바 개발자
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
답변
나는 적절한 의존성을 잊어 버렸기 때문에이 문제를 만났습니다.
implementation "android.arch.lifecycle:extensions:$archLifecycleVersion"
implementation "android.arch.persistence.room:runtime:$archRoomVersion"
annotationProcessor "android.arch.lifecycle:compiler:$archLifecycleVersion"
annotationProcessor "android.arch.persistence.room:compiler:$archRoomVersion"
annotationProcessor를 추가하고 다시 빌드하면 문제가 해결되었습니다.