无法解析符号 RoomDatabase

use*_*850 5 dependencies android android-room

我想尝试 Room Persistence 库,但是在使用 gradle 添加并下载它之后,我可以找到大多数类,除了:

import android.arch.persistence.room.Database;
import android.arch.persistence.room.RoomDatabase;

import com.doors.geopoly.dal.entities.User;

@Database(entities = {User.class}, version = 1)

public abstract class GeoDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}
Run Code Online (Sandbox Code Playgroud)

每个房间库类都存在,但 RoomDatabase 将在 IDE 中显示为红色,表明它无法解析该符号。

为什么?

这是我的 gradle 配置:

project(":core") {
    apply plugin: "java"


    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"

        implementation "android.arch.persistence.room:runtime:1.1.1"
        annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

bei*_*rad 0

看来你像Clean Architecture一样将层分开了。

如果我们假设您使用一个单独的模块来包装所有数据库事务等名为db_module

您应该注意,这Room是一个依赖于 Android 平台的 Android 库lifecycleAware,因此您必须将db_module包含 Room 的内容定义为 Android 库。

所以它只是使用

apply plugin: "com.android.library"
Run Code Online (Sandbox Code Playgroud)

代替

apply plugin: "java"
Run Code Online (Sandbox Code Playgroud)

这会将您的 java 模块更改为包含 Android 操作系统属性的 android 模块。