自从 Google 在2018年推出 Jetpack 之后,它就成为了 Android 未来发展的风向标。同时 Google 也希望借助 Jetpack 统一开发者开发规范,可以说,如果还想在 Android 界驰骋沙场,Jetpack 是我们必须要掌握的杀招。
一、Jetpack 概述
Jetpack 是 Google 为解决 Android 开发碎片化、构建成熟健康生态圈提出的战略规划,是一系列优秀 Android 组件的集合。其核心优势在于基于生命周期感知的能力,可大幅减少 NPE 崩溃与内存泄露,同时消除大量重复样板代码。Jetpack 鼓励统一开发模式,推动开发者从传统 MVC/MVP 转向 MVVM 架构。
Jetpack 组件分为四类:Architecture(Lifecycle、LiveData、ViewModel、Room、Paging、Navigation、WorkManager、DataBinding)、Foundation(AppCompat、Android KTX、Multidex、Test)、Behavior(CameraX、DownloadManager、Media、Permissions、Notifications、Sharing)、UI(Animation、Emoji、Fragment、Layout、Palette)。
二、项目配置与依赖接入
Step 1:启用 AndroidX
在 gradle.properties 中配置:
android.useAndroidX=true |
Jetifier 会自动将第三方库中的 Support 库依赖迁移到 AndroidX。
Step 2:添加 Jetpack 依赖
在 app/build.gradle 中按需引入:
// 核心架构组件 |
Step 3:依赖统一管理
推荐使用 gradle.properties 或 buildSrc 统一版本号:
// buildSrc/src/main/kotlin/Versions.kt |
三、Jetpack 架构全景图
在经典的 MVVM 架构中,各组件协作关系如下:
Activity/Fragment (View) |
四、最佳实践
- Single Activity 架构:使用 Navigation + Fragment 构建单 Activity 应用,减少 Activity 间通信开销。
- ViewModel + LiveData:ViewModel 持有 UI 数据并在配置变更时存活,LiveData 确保观察者在生命周期活跃时接收更新。
- Repository 模式:将数据源抽象为 Repository,ViewModel 不感知数据来自网络还是本地。
- Kotlin Coroutines + Flow:替代 RxJava 进行异步操作,与 Jetpack 组件天然集成。
面试常考问题
Q1:AndroidX 与 Support Library 的区别?
AndroidX 是 Support Library 的升级版,采用 androidx.* 包名、独立语义化版本控制(每个组件可独立升级)、不再维护 Support 28.0.0 之后的版本。Jetifier 工具可在编译期将 Support 引用转换为 AndroidX。
Q2:enableJetifier 的作用是什么?
Jetifier 在构建过程中扫描所有依赖的字节码,将 Support Library 类名、包名、资源引用自动迁移到 AndroidX 对应项。适用于依赖了尚未迁移 AndroidX 的第三方库的场景。AOSP 源码路径:frameworks/support/ 目录下的各组件模块。
Q3:Jetpack Compose 与传统 View 体系如何共存?
Compose 通过 ComposeView 嵌入传统 View,或通过 AndroidView 将 View 嵌入 Compose。两者在 setContent {} 桥接。推荐新项目全面 Compose,存量项目渐进式迁移。







