目录
  1. 1. 一、Jetpack 概述
  2. 2. 二、项目配置与依赖接入
  3. 3. 三、Jetpack 架构全景图
  4. 4. 四、最佳实践
  5. 5. 面试常考问题
JetPack全家桶(一)之JetPack配置

自从 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
android.enableJetifier=true

Jetifier 会自动将第三方库中的 Support 库依赖迁移到 AndroidX。

Step 2:添加 Jetpack 依赖

app/build.gradle 中按需引入:

// 核心架构组件
implementation "androidx.core:core-ktx:1.9.0"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"

// Room 数据库
implementation "androidx.room:room-runtime:2.5.1"
implementation "androidx.room:room-ktx:2.5.1"
kapt "androidx.room:room-compiler:2.5.1"

// Paging 分页
implementation "androidx.paging:paging-runtime-ktx:3.1.1"

// Navigation
implementation "androidx.navigation:navigation-fragment-ktx:2.5.3"
implementation "androidx.navigation:navigation-ui-ktx:2.5.3"

// WorkManager
implementation "androidx.work:work-runtime-ktx:2.8.1"

// DataBinding - 在 android {} 块中启用
buildFeatures {
dataBinding = true
}

Step 3:依赖统一管理

推荐使用 gradle.propertiesbuildSrc 统一版本号:

// buildSrc/src/main/kotlin/Versions.kt
object Versions {
const val lifecycle = "2.6.1"
const val room = "2.5.1"
const val paging = "3.1.1"
const val navigation = "2.5.3"
const val work = "2.8.1"
}

三、Jetpack 架构全景图

在经典的 MVVM 架构中,各组件协作关系如下:

Activity/Fragment (View)
|-- 观察 LiveData --> ViewModel --> Repository
|-- Room (本地数据)
|-- Retrofit (远程数据)
Navigation 管理页面跳转
DataBinding / ViewBinding 绑定视图
Paging 驱动分页加载
WorkManager 处理后台任务

四、最佳实践

  1. Single Activity 架构:使用 Navigation + Fragment 构建单 Activity 应用,减少 Activity 间通信开销。
  2. ViewModel + LiveData:ViewModel 持有 UI 数据并在配置变更时存活,LiveData 确保观察者在生命周期活跃时接收更新。
  3. Repository 模式:将数据源抽象为 Repository,ViewModel 不感知数据来自网络还是本地。
  4. 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,存量项目渐进式迁移。

打赏
  • 微信
  • 支付宝

评论