首页 / Android 入门教程 / Jetpack 全景

Android 入门教程

Jetpack 全景

本教程共 100 篇 · 第 82 篇 · 更新于 2026-07-28 · 约 7 分钟阅读

AndroidAndroid 入门教程JetpackAndroidXCompose架构组件

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,存自定义对象。

页面导航组件。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 相关扩展,ComponentActivityActivityResultLauncher 等。

其他常用库

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)
Tip

Compose 用 BOM(Bill of Materials)统一版本,不用每个库都写版本号。BOM 保证 Compose 各库互相兼容。

常见坑

  1. 混用 Support Library 和 AndroidX:冲突。统一用 AndroidX,gradle.propertiesandroid.useAndroidX=true
  2. 库版本不匹配:Compose BOM 没用,各库版本乱填,编译报错。用 BOM 统一。
  3. LiveData 滥用:数据层用 LiveData,转换在主线程跑。用 Flow。
  4. Fragment 当 Compose 用:Compose 项目里硬塞 Fragment,多此一举。
  5. 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 的权限系统。