关于 android-architecture
为 Android 应用设计与重构提供现代架构和模块化指南,面向需要划分清晰职责的开发者。内容包括 UI、Domain、Data 分层、Hilt 依赖注入及多模块策略。
主要功能
- 01UI、Domain、Data 分层
- 02单向依赖规则
- 03使用 Hilt 进行依赖注入
- 04按核心能力与功能拆分模块
- 05以 StateFlow 连接 ViewModel 与 UI
适用场景
- 01规划 Android 应用的分层结构
- 02将业务逻辑与 Android 框架分离
- 03为生产应用拆分功能模块
- 04通过 Hilt 管理对象依赖
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ new-silvermoon/ awesome-android-agent-skills --skill android-architecture安装后在 Claude Code 中输入/android-architecture确认已加载。
详细介绍
Android 现代架构与模块化
说明
设计或重构 Android 应用时,请遵循 应用架构指南 和 整洁架构 原则。
1. 高层架构分层
将应用划分为三个主要层。依赖关系必须严格向内(或向下)指向核心逻辑。
- UI 层(表现层):
- 职责:展示数据并处理用户交互。
- 组件:Activity、Fragment、Composable、ViewModel。
- 依赖关系:依赖领域层(如果应用较简单,也可依赖数据层)。绝不能直接依赖数据层的实现细节。
- 领域层(业务逻辑)[可选但推荐]:
- 职责:封装复杂业务规则并实现复用。
- 组件:用例(例如
GetLatestNewsUseCase)、领域模型(纯 Kotlin 数据类)。 - 纯 Kotlin:不得包含任何 Android 框架依赖(不得导入
android.*)。 - 依赖关系:依赖仓库接口。
- 数据层:
- 职责:管理应用数据(获取、缓存、保存)。
- 组件:仓库(实现)、数据源(Retrofit API、Room DAO)。
- 依赖关系:仅依赖外部数据源和库。
2. 使用 Hilt 进行依赖注入
所有依赖注入均使用 Hilt。
- @HiltAndroidApp:用于标注
Application类。 - @AndroidEntryPoint:用于标注 Activity 和 Fragment。
- @HiltViewModel:用于标注 ViewModel;使用标准的
constructor注入。 - 模块:
- 对于应用范围内的单例(例如网络、数据库),使用
@Module和@InstallIn(SingletonComponent::class)。 - 在抽象类中使用
@Binds绑定接口实现(比@Provides更简洁)。
- 对于应用范围内的单例(例如网络、数据库),使用
3. 模块化策略
对于生产级应用,采用多模块策略,以缩短构建时间并实现关注点分离。
- :app:主入口,连接各个功能。
- :core:model:共享领域模型(纯 Kotlin)。
- :core:data:仓库、数据源、数据库、网络。
- :core:domain:用例和仓库接口。
- :core:ui:共享 Composable、主题、资源。
- :feature:[name]:独立的功能模块,包含自身的 UI 和 ViewModel。依赖
:core:domain和:core:ui。
4. 实现检查清单
- 确保
Domain层没有 Android 依赖。 - 仓库应默认提供主线程安全的挂起函数(如有需要,可在内部使用
Dispatchers.IO)。 - ViewModel 应通过
StateFlow与 UI 层交互(参见android-viewmodelskill)。
评论
支持 Markdown