首页 > 解决方案 > Room : 添加额外的功能包/模块

问题描述

问题

我希望为我的项目添加额外的功能,一个Roombased instantapp,我不确定这样做的最佳策略。应该在现有模块Feature A下或在新的单独模块下提供额外的“活动” Feature B。由于新代码将依赖于已经定义的实体和 POJO,Feature A我可以将这些类提取到base模块中还是应该设置一个单独的database模块来包含它们?

背景 (TL;DR)

我目前对Android项目结构的理解如下。Android Studio 为一个新的应用程序生成了大约两个结构。

这些模块似乎组织如下:

每个模块按如下方式相互继承(implementation ("MODULE")根据 gradle 构建文件中的行确定)。

            base
             |
             V
          Feature A
          /       \
         V         V
        app    instantapp

好奇心

base模块_

base据说会生成一个AAR文件。也就是说,它创建了一个可以在其他模块中导入的 Android 库。从文档看来,最好使用apigradle 构建文件中的宏导入此类模块,但用于Feature A使用implementation宏的库存构建文件。是否有一个原因 ?

每个功能的实体

其他框架(例如 Django)允许Feature X模块通过简单地包含模块来定义它们自己的实体,这些实体包含在主数据库中。这可以通过 dagger 或可能的 Kotlin 扩展来完成(我对 dagger 一无所知,但它似乎支持可能用于此目的的依赖注入)?

标签: androidstructureandroid-room

解决方案


我总是喜欢将数据库集中为一个单独的模块。这样任何人都可以使用数据库表,它们也会松散耦合,这意味着如果有人之前使用 sqlite 并想迁移到 RoomDatabase,那么只能修改 1 个模块,而其他所有模块都保持不变。这是 1 个示例架构。https://github.com/ankitthakur/MobileSecurity-Android


推荐阅读