android - 在图书馆项目中使用 Room DB
问题描述
我正在尝试将房间数据库集成到图书馆项目中
apply plugin: 'com.android.library'
.
.
.
.
.
compile "android.arch.persistence.room:runtime:$rootProject.roomVersion"
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
当我在我的应用程序中使用这个库并尝试访问 Room DB 时,它总是崩溃并给我以下异常
Android room persistent: AppDatabase_Impl does not exist
但是,当我直接在我的应用程序中使用房间数据库时,它可以正常工作。在图书馆项目中使用房间数据库有什么限制吗?
解决方案
首先将您的应用程序卸载到设备和模拟器中。
然后流到下面的步骤到房间分贝。将以下依赖项添加到应用程序级别的 gradle 文件中。
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
而不是像下面这样进行应用级别的活动..
public class AppActivity extends Application {
static AppDatabase db;
@Override
public void onCreate() {
super.onCreate();
db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build();
}
public static AppDatabase getDatabase() {
return db;
}
}
然后制作应用数据库..
@Database(entities = {MyTable.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract MyTableDao getTableDao();
}
道..
@Dao
public interface MyTableDao {
@Insert
void insertData(MyTable myTable);
@Query("SELECT * FROM MyTable ")
List<MyTable> getData();
}
然后还将应用程序活动定义到应用程序标记中的android清单文件中。
android:name=".AppActivity"
推荐阅读
- gis - “通过所有基础”标准如何在 SpatialFIlter 中工作。在FME?
- c# - 如何在运行时为嵌套属性构建类映射
- javascript - 如何使用嵌套循环 (.each) 在 Cypress 中迭代 HTML 表
- mysql - 在 Mysql 中,以前的用户在 droppng 并创建同名后可以访问数据库
- c# - 按键输入后需要循环
- javascript - Laravel & React:限制对已识别用户的访问
- gis - 当 SpatialFilter 在基础和候选之间建立空间关系时,如果在 FME 中一对多,它是如何链接的
- swift - 将 sqlite 预加载到核心数据
- javascript - 滚动页面或滑动滑块时,如何停止使用 react-youtube 包嵌入的视频?
- javascript - 在Javascript中从数组中选择并删除随机单词