以下整理了 Android 开发中常用的流行组件库,涵盖网络、异步、架构、UI、工具等核心场景,共 20+ 个分类,并标注关键特性和推荐场景:
一、网络请求
-
OkHttp
- 特性: 高效 HTTP 客户端,支持同步/异步请求、连接池、缓存等。
- 场景: 基础网络层,常与 Retrofit 配合使用。
-
Retrofit
- 特性: 类型安全的 REST 客户端,基于 OkHttp,支持 RxJava/协程。
- 场景: 快速构建 API 接口,适合结构化网络请求。
二、图片加载
-
Glide
- 特性: 高效图片加载库,支持 GIF/WebP,内存优化优秀。
- 场景: 图片加载、缓存、压缩的首选。
-
Coil (Kotlin 优先)
- 特性: 基于 Kotlin 协程的轻量级图片库,API 简洁。
- 场景: 替代 Glide/Picasso,适合 Kotlin 项目。
三、异步处理
-
Kotlin Coroutines
- 特性: 官方推荐的异步解决方案,简化线程管理。
- 场景: 替代回调地狱,协程+Flow 是趋势。
-
RxJava/RxAndroid
- 特性: 响应式编程,支持复杂的异步链式操作。
- 场景: 已有 Rx 生态项目或需要复杂事件流处理。
四、依赖注入 (DI)
-
Hilt
- 特性: 基于 Dagger 的官方 DI 框架,简化配置。
- 场景: 新项目推荐,与 Jetpack 组件深度集成。
-
Koin
- 特性: 纯 Kotlin 实现的轻量级 DI,无代码生成。
- 场景: 中小项目快速实现 DI,学习曲线低。
五、数据库
-
Room
- 特性: SQLite 抽象层,支持 LiveData/Flow 观察数据变化。
- 场景: 本地结构化数据存储,配合协程使用更高效。
六、架构组件 (Jetpack)
-
ViewModel & LiveData
- 特性: 生命周期感知的数据管理,避免内存泄漏。
- 场景: MVVM 架构核心,UI 与数据分离。
-
Data Binding
- 特性: 声明式 UI 绑定,减少模板代码。
- 场景: 简化 UI 更新逻辑,结合 LiveData 使用。
-
Navigation
- 特性: 管理 Fragment 导航,可视化路由设计。
- 场景: 单 Activity 多 Fragment 架构。
-
Paging 3
- 特性: 分页加载数据,支持本地/远程混合数据源。
- 场景: 列表分页(如 RecyclerView)。
-
WorkManager
- 特性: 后台任务调度,兼容不同 API 级别。
- 场景: 定时任务、延迟任务等。
七、响应式编程
-
Flow
- 特性: Kotlin 官方异步流处理,与协程深度集成。
- 场景: 替代 LiveData 或 RxJava 的观察者模式。
八、UI 组件
-
Material Components
- 特性: 官方 Material Design 组件库,提供标准化 UI 控件。
- 场景: 遵循 Material Design 规范的应用。
-
Lottie
- 特性: 渲染 After Effects 动画(JSON 格式),提升动效体验。
- 场景: 复杂动画效果实现。
-
Epoxy (RecyclerView 增强)
- 特性: 简化复杂列表开发,支持 Diff 更新。
- 场景: 多类型、嵌套列表等复杂场景。
九、调试与工具
-
LeakCanary
- 特性: 自动检测内存泄漏,提供堆栈信息。
- 场景: 内存优化必备工具。
-
Timber
- 特性: 增强型日志库,支持全局日志控制。
- 场景: 替代 Android 原生 Log 类。
-
Chucker
- 特性: 抓取并展示网络请求信息,调试接口利器。
- 场景: 替代 Stetho 或 Chuck,适合开发环境。
十、测试
-
JUnit 5 & MockK
- 特性: 单元测试框架 + Kotlin 友好的 Mock 库。
- 场景: 单元测试、模拟依赖。
-
Espresso
- 特性: UI 自动化测试框架,模拟用户操作。
- 场景: 集成测试、UI 交互验证。
十一、其他实用库
-
Gson/Moshi
- 特性: JSON 序列化/反序列化,Moshi 对 Kotlin 更友好。
- 场景: 解析 API 返回的 JSON 数据。
-
Security Crypto
- 特性: 加密 SharedPreferences 和文件。
- 场景: 敏感数据安全存储。
选择建议
- 新项目优先选择 Kotlin 协程 + Flow,替代 RxJava 减少复杂度。
- 架构层使用 Jetpack 组件(ViewModel + Room + Paging)构建 MVVM。
- 图片加载推荐 Glide 或 Coil,网络层 Retrofit + OkHttp 是标配。
- DI 框架根据项目规模选择 Hilt(中大型)或 Koin(轻量级)。
这些库覆盖了 Android 开发的核心需求,熟练掌握可大幅提升开发效率和应用质量。
以下是针对组件化项目的模块划分建议,将库按功能分层,便于复用和解耦。以下为典型组件化结构示例:
模块划分方案
模块类型 | 模块命名示例 | 包含的库/功能 | 依赖关系 |
---|---|---|---|
App 壳模块 | app |
- 应用入口、全局配置 - 主工程依赖管理 |
依赖所有业务模块和基础模块 |
基础通用模块 |
base 或 common
|
- OkHttp、Retrofit - Glide、Coil - Kotlin Coroutines、RxJava - Room、WorkManager - Timber、Security Crypto - Gson/Moshi |
无上层依赖,纯工具层 |
基础UI模块 | base-ui |
- Material Components - Lottie - Epoxy - Data Binding |
依赖 base 模块 |
网络模块 | network |
- Retrofit 接口定义 - API 数据模型 - 网络拦截器配置 |
依赖 base 模块 |
数据仓库模块 | repository |
- 整合网络层 (network ) 和数据库层 (db )- 提供统一数据源给 ViewModel |
依赖 network 和 db 模块 |
数据库模块 | db |
- Room 数据库定义 - Entity、DAO 类 |
依赖 base 模块 |
DI 核心模块 | di-core |
- Hilt/Koin 的核心配置 - 全局依赖提供(如 ApplicationContext) |
依赖 base 模块 |
业务模块 |
feature-home feature-user
|
- ViewModel、LiveData/Flow - 业务逻辑代码 - 专属 UI 组件 - 依赖 repository 获取数据 |
依赖 repository 、base-ui 等 |
第三方库管理模块 | third-party |
- 集中管理所有第三方库版本 (可选,可通过 buildSrc 或 version-catalog 替代) |
无依赖 |
调试工具模块 | debug-tools |
- LeakCanary - Chucker - 仅 Debug 环境依赖 |
依赖 base 模块 |
详细分组说明
1. 基础通用模块 (base
或 common
)
-
包含库:
// network implementation 'com.squareup.okhttp3:okhttp' implementation 'com.squareup.retrofit2:retrofit' // async implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android' // database implementation 'androidx.room:room-ktx' // tools implementation 'com.jakewharton.timber:timber' implementation 'androidx.security:security-crypto'
-
职责:
- 提供网络、数据库、工具类等基础设施。
- 所有业务模块和功能模块依赖此模块。
2. 基础UI模块 (base-ui
)
-
包含库:
// UI components implementation 'com.google.android.material:material' implementation 'com.airbnb.android:lottie' implementation 'com.airbnb.android:epoxy' // Data Binding android { buildFeatures { dataBinding true } }
-
职责:
- 封装通用 UI 组件(如自定义 View、RecyclerView Adapter 模板)。
- 提供统一的主题和样式定义。
3. 网络模块 (network
)
-
包含内容:
- Retrofit 接口定义(如
ApiService.kt
)。 - 网络请求数据模型(如
ApiResponse.kt
)。 - 自定义拦截器(如 Token 刷新、日志拦截器)。
- Retrofit 接口定义(如
-
配置示例:
// 创建 Retrofit 实例并暴露给上层 object NetworkModule { fun provideApiService(): ApiService { return Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .build() .create(ApiService::class.java) } }
4. 数据仓库模块 (repository
)
-
包含内容:
- 整合
network
和db
模块的数据源。 - 实现数据缓存策略(如“网络优先,数据库兜底”)。
- 整合
-
示例代码:
class UserRepository( private val apiService: ApiService, private val userDao: UserDao ) { suspend fun getUser(): Flow<User> { // 1. 从数据库读取缓存 // 2. 发起网络请求 // 3. 更新数据库 } }
5. 业务模块 (feature-home
, feature-user
)
-
配置要点:
- 每个业务模块独立编译,可单独运行。
- 使用
Hilt
或Koin
注入依赖:// feature-home/build.gradle dependencies { implementation project(':base') implementation project(':repository') // Hilt 在业务模块中的配置 implementation 'com.google.dagger:hilt-android' kapt 'com.google.dagger:hilt-compiler' }
- 通过
AndroidManifest.xml
定义独立入口(开发阶段调试用)。
6. DI 核心模块 (di-core
)
-
Hilt 配置示例:
// di-core 模块中定义全局 Module @Module @InstallIn(SingletonComponent::class) object AppModule { @Provides fun provideContext(application: Application): Context = application }
-
业务模块中的使用:
@Module @InstallIn(ViewModelComponent::class) object HomeModule { @Provides fun provideHomeRepo(context: Context): HomeRepo = HomeRepoImpl(context) }
组件化配置关键点
-
模块隔离:
- 使用
implementation
而非api
避免依赖泄漏。 - 通过
build.gradle
控制模块可见性:// settings.gradle include ':app', ':base', ':feature-home'
- 使用
-
资源隔离:
- 各业务模块使用前缀避免资源冲突:
// feature-home/build.gradle android { resourcePrefix "home_" }
- 各业务模块使用前缀避免资源冲突:
-
路由通信:
- 使用 ARouter 或
Navigation
组件实现跨模块跳转:// base 模块中定义路由接口 interface RouterService { fun navigateToHome(context: Context) }
- 使用 ARouter 或
-
版本统一管理:
- 使用
buildSrc
或version-catalog
集中管理依赖版本:// buildSrc/src/main/kotlin/Dependencies.kt object Versions { const val retrofit = "2.9.0" }
- 使用
最终依赖关系图
app (壳模块)
├── feature-home (业务模块)
│ ├── repository
│ ├── base-ui
│ └── di-core
├── feature-user (业务模块)
│ ├── repository
│ └── base-ui
├── repository (数据仓库)
│ ├── network
│ └── db
├── network (网络层)
│ └── base
├── db (数据库)
│ └── base
└── base (通用基础)
└── third-party
通过这种分层设计,可以实现代码高复用、低耦合,并支持团队并行开发。