Jetpack 全景
本教程共 100 篇 · 第 82 篇 · 更新于 2026-07-28 · 约 7 分钟阅读
82. Jetpack 全景
本节目标:了解 Jetpack 生态的全貌,知道四大分类下有哪些常用库,每个库解决什么问题,避免重复造轮子。
前面学了不少 Jetpack 库(ViewModel、Room、WorkManager、Lifecycle、Compose),这章把它们放到一张地图里,让你知道还有什么能用。
Jetpack 是什么
Jetpack 是 Google 推出的 Android 开发组件库集合,统一在 androidx 命名空间下(所以也叫 AndroidX)。它包含:
- 解决常见问题的库(网络?架构?数据存储?)。
- 跨 Android 版本的兼容 API。
- 官方推荐的最佳实践封装。
- 工具和测试支持。
打个比方,Jetpack 像装修队的标准工具箱:锤子、螺丝刀、电钻都有,不用你自己去造。装到一半发现需要啥,去工具箱翻就行。
四大分类
Jetpack 按用途分四大类:
| 分类 | 解决什么 | 代表库 |
|---|---|---|
| Foundation | 基础能力,所有应用都用得上 | AppCompat、Core KTX、Lifecycle、ViewModel |
| Architecture | 架构组件,组织代码结构 | Room、WorkManager、Navigation、DataStore、Hilt、Paging |
| Behavior | 行为交互,跨应用通信 | Notifications、Permissions、Sharing |
| UI | 界面相关 | Compose、Material Components、Fragment、Activity |
Foundation 基础库
AppCompat
让老版本 Android 用上新版 API。比如 AppCompatActivity 提供 ActionBar、暗色主题支持。
class MainActivity : AppCompatActivity()
新项目用 Compose 后 AppCompat 用得少了,但单 Activity 还得继承 ComponentActivity(AppCompat 的父类)。
Core KTX
Kotlin 扩展函数集合,给 Android API 加语法糖。
// 不用 KTX
view.post(Runnable { view.isVisible = true })
// 用 KTX
view.post { view.isVisible = true }
几乎所有项目都该加:
implementation("androidx.core:core-ktx:1.15.0")
Lifecycle + ViewModel
前面讲过。生命周期感知组件 + 状态容器,MVVM 的基础。
Architecture 架构库
Room
前面讲过。SQLite 之上的 ORM,配合协程和 Flow。
WorkManager
前面讲过。可靠执行的后台任务调度。
DataStore
SharedPreferences 的现代替代品,基于协程和 Flow,支持类型安全。
val dataStore = context.dataStore
val counterFlow: Flow<Int> = dataStore.data.map { it[COUNTER_KEY] ?: 0 }
比 SP 优势:
- 协程异步,不阻塞主线程。
- 类型安全,不用手动
getString/getInt。 - 支持 Proto DataStore,存自定义对象。
Navigation
页面导航组件。Compose 项目用 Navigation Compose:
NavHost(navController, startDestination = "home") {
composable("home") { HomeScreen() }
composable("detail/{id}") { backStackEntry ->
DetailScreen(backStackEntry.arguments?.getString("id"))
}
}
管理返回栈、传参、深层链接。
Hilt
Dagger 的 Android 封装,依赖注入。注解自动生成代码,比手写 Factory 简单得多。第 97 章详讲。
Paging 3
分页加载大数据集(列表、数据库、网络)。配合 Room 和 Compose 用:
@Composable
fun PagedList(pagingItems: LazyPagingItems<Item>) {
LazyColumn {
items(pagingItems) { item ->
item?.let { Text(it.name) }
}
}
}
自动加载下一页、处理加载状态、错误重试。
DataBinding + ViewBinding
第 96 章详讲。View 体系下绑定 XML 和代码,替代 findViewById。
Behavior 行为库
Notifications
第 84-85 章详讲。构建和发送通知,支持渠道、分组、进度。
Permissions
第 83 章详讲。运行时权限请求的封装。
Sharing
ShareCompat 简化分享功能:
ShareCompat.IntentBuilder(context)
.setType("text/plain")
.setText("分享内容")
.startChooser()
UI 库
Jetpack Compose
本教程主线 UI 框架。声明式 UI,前面章节详讲。
Material Components
Material Design 的官方实现。Compose 用 MaterialTheme,View 体系用 MaterialComponents 主题。
Fragment
View 体系下的 UI 模块化方案。Compose 项目里 Fragment 用得少了,但老项目还在用。
Activity
Activity 相关扩展,ComponentActivity、ActivityResultLauncher 等。
其他常用库
Coil
图片加载库,Compose 原生支持。第 90 章详讲。
AsyncImage(
model = "https://...",
contentDescription = null
)
Accompanist
Compose 的辅助库集合,提供 Permissions、SystemUiController、Swipe Refresh 等扩展。部分功能(如 Permissions)已合并到官方库。
Startup
应用启动初始化库,替代 Application.onCreate 里手动 init。
class AppInitializer : Initializer<Unit> {
override fun create(context: Context) {
// 初始化
}
override fun dependencies(): List<Class<out Initializer<*>>> = emptyList()
}
在 manifest 里声明,系统按依赖顺序初始化。
Benchmark
性能基准测试,测启动时间、帧率、操作耗时。
Profile Installer
配合 Baseline Profile,提前编译热点代码,加快启动。
怎么选库
新项目该用哪些?我给个清单:
必装:
- Core KTX
- Lifecycle + Lifecycle Runtime Compose
- ViewModel
- Compose(含 Material 3)
- Navigation Compose
- Coroutines
- Room(需要本地存储)
- Retrofit + Moshi(需要网络)
- Hilt(依赖注入)
- Coil(图片加载)
按需:
- WorkManager(后台任务)
- DataStore(键值存储)
- Paging 3(长列表分页)
- ExoPlayer/Media3(音视频)
- CameraX(相机)
- Accompanist(系统 UI 控制)
- BluetoothLE(蓝牙)
少用:
- DataBinding(Compose 项目不需要)
- Fragment(Compose 项目不需要)
- LiveData(StateFlow 替代)
- AsyncTask(已废弃)
版本管理
Jetpack 库都在 androidx 下,版本独立。用 libs.versions.toml 集中管理:
[versions]
kotlin = "2.0.21"
compose-bom = "2024.12.01"
room = "2.8.4"
hilt = "2.52"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version = "1.15.0" }
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
build.gradle.kts 里引用:
implementation(libs.androidx.core.ktx)
implementation(platform(libs.compose.bom))
implementation(libs.room.runtime)
TipCompose 用 BOM(Bill of Materials)统一版本,不用每个库都写版本号。BOM 保证 Compose 各库互相兼容。
常见坑
- 混用 Support Library 和 AndroidX:冲突。统一用 AndroidX,
gradle.properties里android.useAndroidX=true。 - 库版本不匹配:Compose BOM 没用,各库版本乱填,编译报错。用 BOM 统一。
- LiveData 滥用:数据层用 LiveData,转换在主线程跑。用 Flow。
- Fragment 当 Compose 用:Compose 项目里硬塞 Fragment,多此一举。
- Hilt 不用,手写 Factory:代码量大,维护成本高。中大型项目用 Hilt。
小结
Jetpack 是 Android 官方组件库,分 Foundation、Architecture、Behavior、UI 四类。新项目必备:Core KTX、Lifecycle、ViewModel、Compose、Navigation、Coroutines、Room、Retrofit、Hilt、Coil。按需加 WorkManager、DataStore、Paging 等。版本用 libs.versions.toml 集中管理,Compose 用 BOM 统一。
到这里架构与 Jetpack 部分结束。下一章进入权限与系统服务,先看 Android 的权限系统。