Android 多模块项目中的房间数据库

Android 多模块项目中的房间数据库,android,android-room,Android,Android Room,在我的项目中,我有一个名为app的app模块和一个名为app_lib的Android库。我想有一个数据库,这两个工作与此数据库 问题是,我如何才能做到这一点 到目前为止,我已经完成了我的工作,我在“app_lib”中创建了我的模型和Dao类,我在“app”中调用了抽象类数据库,并以这种方式创建了表。现在的问题是,在创建AppDatabase时,如何在“app_lib”中调用查询?: AppDatabase db = Room.databaseBuilder(getApplicationConte

在我的项目中,我有一个名为app的app模块和一个名为app_lib的Android库。我想有一个数据库,这两个工作与此数据库

问题是,我如何才能做到这一点


到目前为止,我已经完成了我的工作,我在“app_lib”中创建了我的模型和Dao类,我在“app”中调用了抽象类数据库,并以这种方式创建了表。现在的问题是,在创建AppDatabase时,如何在“app_lib”中调用查询?

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, "database-name").build();
第二个参数是数据库的名称,如果在两个模块中使用相同的名称,则应使用相同的数据库,前提是它们是同一应用程序的一部分

您不应该从应用程序模块导入模型和dao。您的应用程序模块应该依赖于库,而不是相反


但是,如果不想将相同的类文件复制到两个模块,可以将房间类移动到库中,然后从lib模块导入这些类。如果不希望这些类成为lib模块的一部分,可以创建另一个处理数据库操作的模块,然后在库模块和应用程序模块中使用该模块中的类。

创建AppDatabase时:

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, "database-name").build();
第二个参数是数据库的名称,如果在两个模块中使用相同的名称,则应使用相同的数据库,前提是它们是同一应用程序的一部分

您不应该从应用程序模块导入模型和dao。您的应用程序模块应该依赖于库,而不是相反


但是,如果不想将相同的类文件复制到两个模块,可以将房间类移动到库中,然后从lib模块导入这些类。如果您不希望这些类成为lib模块的一部分,您可以创建另一个处理数据库操作的模块,然后在library模块和app模块中使用该模块中的类。

将文件室实现移动到另一个模块,我需要为其创建迁移?@WellingtonYogui no,迁移适用于同一数据库的不同版本,而不是modules@WellingtonYogui只需在单独的模块中创建类即可。谢谢@Zohaib Amir我从你的回答中学到了很多,但我还有一个问题。如果有多个模块要添加或更改表,如何升级数据库?将文件室实现移动到另一个模块,我需要为其创建迁移?@WellingtonYogui否,迁移适用于同一数据库的不同版本,而不是modules@WellingtonYogui只需在单独的模块中创建类即可。谢谢@Zohaib Amir我从你的回答中学到了很多,但我还有一个问题。如果有多个模块要添加或更改表,如何升级数据库