mcpField
A
android-architecture

android-architecture

github.com/new-silvermoon开发992676 次安装13 周前更新
代码仓库

关于 android-architecture

为 Android 应用设计与重构提供现代架构和模块化指南,面向需要划分清晰职责的开发者。内容包括 UI、Domain、Data 分层、Hilt 依赖注入及多模块策略。

主要功能

  1. 01UI、Domain、Data 分层
  2. 02单向依赖规则
  3. 03使用 Hilt 进行依赖注入
  4. 04按核心能力与功能拆分模块
  5. 05以 StateFlow 连接 ViewModel 与 UI

适用场景

  1. 01规划 Android 应用的分层结构
  2. 02将业务逻辑与 Android 框架分离
  3. 03为生产应用拆分功能模块
  4. 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-viewmodel skill)。

评论

支持 Markdown