Android 中大型项目架构梳理

公司项目是一个维护了近十年的直播项目,经历了无数波的炮火,远古代码到新型代码各种夹杂,导致现在想用一些新一点的代码就得需要大动干戈.近期有新项目开展,所以基于个人开发经验整合一下新项目的架子.

目的: 解耦,易维护,风格统一

模块说明:

  • app 项目主入口,配置打包以及编译任务

  • core 项目的核心库,提供基础的功能(网络,工具,基础UI,路由)

  • component 通用且可复用模块(支付/登录/统计等模块)

  • feature 具体业务功能模块

🏗️ 项目架构说明 (Project Architecture)

为了适应中大型项目,采用 分层模块化架构(Layered Modular Architecture),通过清晰的模块划分来降低耦合、提升代码复用率,并支持业务快速扩展。

🎯 架构设计理念

本项目结合了多种现代 Android 架构思想:

  • Modular Architecture: 通过模块拆分实现并行开发和快速编译。
  • Decoupled by Router: 物理隔离,逻辑连接,实现真正的业务解耦。
  • Automated Infrastructure: 通过 Gradle 自动化任务减少人工出错率。

1:项目环境 新,新,新支持近两年Android新出的库.

  • MVVM/MVP
  • Gradle 8+
  • Jdk 17
  • 模块化/路由

2: 模块结构

text 复制代码
ApplicationArchitecture
├── app                         # 应用入口模块
│
├── core                        # 核心基础层
│   ├── core_aar                # AAR库支持
│   ├── core_base               # 基础框架
│   ├── core_data               # 数据管理层 (UserInfo等)
│   ├── core_network            # 网络层
│   ├── core_ui                 # UI基础组件
│   ├── core_util               # 工具库
│   ├── core_res                # 公共资源
│   └── core_router             # 路由框架
│
├── component                   # 可复用业务组件层
│   ├── component_live          # 直播组件
│   ├── component_beauty        # 美颜组件
│   ├── component_pay           # 支付组件
│   └── component_res           # 组件资源
│
└── feature                     # 业务功能模块
    ├── feature_app             # 主业务功能
    ├── feature_res             # 资源业务
    └── feature_test            # 测试功能

3: 架构分层说明

层级 作用
app 应用入口、配置文件、全局初始化与模块集成
feature 具体业务功能实现,互不依赖
component 可复用业务组件,可被多个 Feature 依赖
core 提供基础能力(数据、网络、UI、工具、路由等)

依赖关系原则

  • FeatureCore
  • ComponentCore
  • AppFeature + Component + Core


3.1. 资源命名规范

所有资源文件必须使用蛇形命名法(snake_case),且 Layout 文件 必须包含以下前缀:

  • activity_*: Activity 布局
  • fragment_*: Fragment 布局
  • view_*: 自定义 View 布局
  • item_*: 列表项布局
  • dialog_*: 对话框布局

3.2. 依赖管理

项目强制使用 gradle/libs.versions.toml (Version Catalog) 管理所有第三方依赖和插件版本,严禁在 build.gradle 中硬编码版本号。

3.3. 异步与存储

  • 异步 : 优先使用 Kotlin CoroutinesFlow
  • 存储 : 键值对存储优先使用 MMKV
  • 图片 : 统一使用 Coil 3

⚙️ 技术栈

技术 说明
语言 Kotlin 2.x
UI ViewBinding + Jetpack Compose (可选)
异步 Kotlin Coroutines & Flow
网络 Retrofit 3 + OkHttp 5
持久化 MMKV (高性能 KV 存储)
Coil Coil加载图片 (支持永久存储图片)

🚀 自动路由机制

项目实现了 自动路由注册系统,用于实现模块间解耦通信。

工作流程

  1. featurecomponent 模块定义 *Routes.kt
  2. Gradle 任务自动扫描并生成 RouterInit.kt
  3. 应用启动时调用 RouterInit.registerAll() 完成注册。


APK 自动命名

构建 APK 时会自动生成带版本和时间的文件名:

bash 复制代码
ApplicationArchitecture_${buildType}_v${versionName}_${time}.apk

示例:

复制代码
ApplicationArchitecture_release_v1.0.0_20260313.apk

相关推荐
海兰10 分钟前
【实战】MCP 服务在 Nacos 中注册状态分析与优化
android·java·github·银行系统·银行ai
bearpping22 分钟前
MySQL压缩版安装详细图解
android·mysql·adb
代码改善世界2 小时前
【matlab初阶】matlab入门知识
android·java·matlab
huwuhang3 小时前
支付宝 APP 谷歌商店版 googleplay版最新
android
User_芊芊君子4 小时前
别再乱用 ArrayList 了!这 4 个隐藏坑,90% 的 Java 开发者都踩过
android·java·数据库
冬天vs不冷4 小时前
为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义
android·java·开发语言
hogenlaw5 小时前
Stream流
android·java·开发语言
常利兵6 小时前
解锁Kotlin:数据类与密封类的奇妙之旅
android·开发语言·kotlin
sunfdf7 小时前
无需密码即可解锁 Android 手机的 5 种方法
android·智能手机
Ln5x9qZC210 小时前
Laravel AI SDK 正式发布
android·人工智能·laravel