价格

项目总览

相关源文件

本页面内容基于以下源文件生成:

SumTea 是一个基于组件化与模块化架构设计的 WanAndroid 客户端项目,采用 Kotlin 语言结合 Jetpack 组件构建 MVVM 架构模式。该项目集成了协程、Flow、Retrofit、Room 等现代 Android 开发技术栈,并实现了短视频播放功能,旨在展示从零到一构建大型 Android 项目的最佳实践。项目通过 ARouter 实现模块间通信,使用 ExoPlayer 实现类抖音短视频列表,整体架构遵循 Google 推荐的应用架构指南。

技术栈概览

技术领域核心技术版本信息
开发语言Kotlin-
架构模式MVVM + JetpackLifecycle, Navigation, DataBinding, LiveData, ViewModel
网络请求Retrofit + OkHttp + 协程 + FlowRetrofit 2.9.0 (config.gradle:25)
数据缓存MMKV + RoomRoom 2.5.0 (config.gradle:38), MMKV 1.2.15 (config.gradle:29)
图片加载Glide4.15.0 (config.gradle:31)
视频播放ExoPlayer2.18.5 (config.gradle:36)
路由框架ARouter1.5.2 (config.gradle:33-34)
响应式RxJava3 + RxAndroidRxJava 3.1.6 (config.gradle:39)
编译配置compileSdk 33, minSdk 21, targetSdk 32(config.gradle:14-17)

架构设计

MVVM 架构模式

项目采用标准的 MVVM 架构模式,严格遵循 Google 推荐的应用架构指南。ViewModel 仅负责数据存储与 UI 状态管理,数据加载逻辑由 Repository 层完成。通过 Room 数据库实现本地缓存,在无网络或弱网环境下优先展示缓存数据,确保用户体验的连续性。

架构核心要点:

  • ViewModel 职责边界:仅处理 UI 相关的数据存储与状态管理,不直接进行网络请求或数据库操作
  • Repository 数据网关:统一管理远程数据源与本地数据源,实现数据缓存策略
  • LiveData 数据驱动:UI 层通过观察 LiveData 自动响应数据变化,实现响应式编程

(README.md:12-24)

组件化与模块化设计

项目通过组件化与模块化拆分实现代码解耦与复用。isModule 配置项控制模块是否独立运行,支持单模块调试与集成编译模式切换。ARouter 作为模块间通信桥梁,通过路由表实现页面跳转与服务调用。

模块化核心原则:

  • 化整为零:将复杂系统拆分为独立的功能模块
  • 化繁为简:每个模块职责单一,降低维护成本
  • 重用与解耦:基础库下沉,业务模块上浮

(README.md:14, config.gradle:3)

系统架构图

正在加载图表渲染器...

架构说明

  • APP壳工程:负责应用全局配置、环境切换、签名混淆及业务模块集成 (README.md:28-30)
  • 业务模块层:5 个独立业务模块,通过 ARouter 实现模块间通信,支持独立调试
  • 核心基础库层:提供 Base 基类、通用组件、网络请求等核心能力
  • 支撑库层:Banner、图片加载、数据库、启动器等独立功能组件

(settings.gradle:18-32)

模块结构

业务模块划分

模块名称职责边界核心功能入口页面
mod_main首页、分类、体系、我的四大 Tab 管理Banner 轮播、视频列表、文章列表、知识体系MainActivity
mod_user用户个人设置与账户管理个人信息编辑、隐私政策、版本更新、缓存清理UserSettingActivity
mod_login用户认证流程登录、注册、隐私协议、第三方登录入口LoginActivity
mod_search内容搜索功能搜索历史、搜索推荐、搜索结果展示SearchActivity
mod_video短视频播放模块RecyclerView 仿抖音列表、ExoPlayer 播放、旋转音乐盒VideoActivity

(README.md:31-55)

基础库封装

lib_framework 核心能力

  • Base 基类封装:BaseActivity、BaseFragment、BaseViewModel
  • 扩展函数集:提供大量 Kotlin 扩展函数加速开发
  • 工具类集合:LogUtil、TipsToast、通用 Utils
  • 管理类封装:各类 Manager 统一管理资源与状态

(README.md:56-64)

lib_network 网络层设计

  • API 接口统一管理
  • 错误处理与异常封装
  • Flow 扩展类实现协程网络请求
  • 拦截器链:日志拦截、头部拦截、缓存拦截
  • BaseViewModel 与 BaseRepository 封装协程作用域

(README.md:71-78)

lib_room 数据缓存层

  • Room 数据库实体定义
  • DAO 层数据访问接口
  • 视频列表缓存策略实现
  • 数据库版本迁移管理

(README.md:87-89)

目录结构

SumTea_Android/
├── app/                          # APP壳工程
│   ├── src/main/
│   │   ├── java/com/sum/tea/     # Application类
│   │   └── res/                  # 主题与资源
│   └── build.gradle              # 打包配置
├── mod_main/                     # 首页模块
├── mod_user/                     # 用户模块
├── mod_login/                    # 登录模块
├── mod_search/                   # 搜索模块
├── mod_video/                    # 视频模块
├── lib_framework/                # 基础框架库
├── lib_common/                   # 通用组件库
├── lib_network/                  # 网络请求库
├── lib_stater/                   # 启动器库
├── lib_banner/                   # Banner组件库
├── lib_glide/                    # 图片加载库
├── lib_room/                     # 数据库库
├── config.gradle                 # 统一配置
└── settings.gradle               # 模块声明

(settings.gradle:18-32)

核心数据流

网络请求调用链

正在加载图表渲染器...

数据流说明

  • UI 层:通过 DataBinding 绑定 ViewModel 的 LiveData,自动响应数据变化
  • ViewModel 层:持有 Repository 引用,不直接进行网络请求,仅管理 UI 状态
  • Repository 层:作为唯一数据源,协调网络与本地缓存,实现单一数据源原则
  • 网络层:通过 Flow 封装异步请求,支持协程取消与异常处理
  • 缓存层:Room 数据库持久化,MMKV 存储轻量级键值对

(README.md:15-17, README.md:22-24)

模块间通信机制

项目通过 ARouter 实现模块间解耦通信,核心通信模式包括:

路由跳转

  • 使用 @Route 注解声明目标页面路径
  • 通过 ARouter.getInstance().build(path).navigation() 进行页面跳转
  • 支持参数传递、拦截器、转场动画

服务调用

  • 定义 IService 接口暴露模块能力
  • 通过 @Route 注解实现类注册服务
  • 调用方通过 ARouter 获取服务实例进行方法调用

(README.md:14, README.md:69)

技术亮点

开发规范与最佳实践

项目严格遵循阿里巴巴 Java 开发规范与 Android 开发规范,代码注释完善。核心亮点包括:

UI 开发规范

  • 全面采用 ConstraintLayout 减少布局层级
  • ViewOutlineProvider 实现圆角效果,避免手写 shape XML
  • CoordinatorLayout + Toolbar 实现栏目吸顶与轮播图电影效果
  • ChipGroup 与 FlexboxLayoutManager 实现流式布局

代码质量保障

  • 大量 Kotlin 扩展函数提升开发效率
  • 完善的注释覆盖,符合团队协作规范
  • 模块化设计确保代码边界清晰

(README.md:97-104)

性能优化方案

启动优化

  • lib_stater 异步任务启动器处理 Application 同步初始化
  • 任务优先级、线程池、依赖关系配置
  • 有效减少 APP 启动耗时

(README.md:79-81, README.md:102)

网络优化

  • Retrofit + OkHttp 连接池复用
  • 网络请求拦截器链统一处理日志、头部、缓存
  • Flow 封装实现请求去重与防抖

缓存策略

  • Room 数据库缓存结构化数据
  • MMKV 缓存键值对配置信息
  • Glide 图片缓存与内存管理

(README.md:16, README.md:84-86)

短视频播放实现

mod_video 模块实现类抖音短视频列表,核心技术点:

播放器管理

  • ExoPlayer 播放器实例全局单例
  • RecyclerView 复用机制与播放器生命周期绑定
  • 保证全局只有一个播放器处于播放状态

UI 交互

  • RotateNoteView 实现旋转音乐盒动画
  • 滑动切换视频的流畅体验
  • 视频列表与评论、点赞等交互组件

(README.md:52-55, config.gradle:36)

核心能力量化

指标维度量化数据
业务模块数5 个(main、user、login、search、video)
基础库数量6 个(framework、common、network、stater、banner、glide、room)
支持最低版本Android 5.0(API 21)
目标版本Android 12L(API 32)
技术栈组件数15+ 核心组件
架构模式MVVM + 组件化 + 模块化

(settings.gradle:19-31, config.gradle:14-17)

适用场景

学习场景

  • Android MVVM 架构最佳实践学习
  • Kotlin + 协程 + Flow 现代开发范式
  • 组件化与模块化项目结构设计
  • 短视频播放功能实现参考

项目参考

  • 中大型 Android 项目架构设计
  • 模块化拆分与通信方案选型
  • 网络请求封装与缓存策略实现
  • 启动优化与性能调优实践

(README.md:3, README.md:91-93)

报告阅读路线图

正在加载图表渲染器...

推荐阅读顺序

  1. 项目总览(当前页面):了解项目整体架构与技术栈
  2. 架构设计:深入理解 MVVM 模式与组件化设计思想
  3. 模块详解:按业务模块逐个分析实现细节
  4. 数据流分析:掌握网络请求、缓存策略、模块通信机制
  5. API 设计:学习网络层封装与接口设计规范
  6. 技术亮点:提炼可复用的技术方案与最佳实践