Jetpack 更新一览 | 2022 Android 开发者峰会
作者 / 产品经理 Amanda Alexander
Android Jetpack
https://developer.android.google.cn/jetpack现代 Android 开发
https://developer.android.google.cn/modern-android-development
Google Play 上的大多数应用都使用 Jetpack 作为其应用架构的关键组件。事实上,在排行前 1,000 的应用中,超过 90% 的应用都使用了 Android Jetpack。
架构库及相关指南
应用性能 界面库及相关指南
架构库及相关指南
应用架构库和组件可确保应用的稳健性、可测试性及可维护性。
使用 WorkManager 管理任务
借助 WorkManager 库,您可以轻松调度必须可靠运行的可延期异步任务,例如上传备份或分析。通过这些 API,您可以创建任务并提交给 WorkManager,以便在满足工作约束条件时运行。
WorkManager
https://developer.android.google.cn/jetpack/androidx/releases/work
更新后的 WorkManager 2.8.0-alpha04 能以非干扰的方式更新 WorkRequest,从而保持其原始排队时间、工作链等。借助 WorkManager,开发者可以更轻松地更改工作器的约束条件。例如,当我们需要将约束条件从一个应用版本更改为另一个版本或通过服务器端设置的配置进行更改时。在过去,只有通过取消已调度的工作器再重新调度才能更改约束条件。但是这种方法会造成严重混乱: 处于运行状态的工作器可能需要停止运行;按一定周期运行的工作器的节奏可能会被打乱;并且当其中一个工作器需要进行更新时,整个工作器链都需要重新构建。而现在,使用 update 方法或 ExistingPeriodicWorkPolicy.UPDATE,开发者便无需担心这些问题。
WorkManager 2.8.0-alpha04
https://developer.android.google.cn/jetpack/androidx/releases/work#2.8.0-alpha04更新 WorkRequest
https://developer.android.google.cn/reference/androidx/work/WorkManager#updateWork(androidx.work.WorkRequest)
数据持久化
Room
https://developer.android.google.cn/jetpack/androidx/releases/room
Android 13 Activity API 现已支持向后兼容
Activity
https://developer.android.google.cn/jetpack/androidx/releases/activity#version_160_3
通过直接使用 ComponentActivity,或 FragmentActivity 或 AppCompatActivity 的任一子类,您可以使用单个 API 来通过照片选择器选择图像,但前提是它可以自动回退到存储访问框架以支持向后兼容 Android 4.4 (API 19)。
照片选择器
https://developer.android.google.cn/training/data-storage/shared/photopicker
预测性返回手势
https://developer.android.google.cn/guide/navigation/predictive-back-gesture自定义返回导航
https://developer.android.google.cn/guide/navigation/navigation-custom-back
使用 Paging 测试库测试分页
Paging
https://developer.android.google.cn/topic/libraries/architecture/paging/v3-overview
Paging 3.2.0-alpha03
https://developer.android.google.cn/jetpack/androidx/releases/paging#3.2.0-alpha03
新的架构文档
新的架构建议页面
https://developer.android.google.cn/topic/architecture/recommendations
我们团队最近发布了新的模块化指南。该指南分为两个部分:
概览页面对相关问题作出高层次的理论性概述。 常见模块化模式页面深入介绍现代 Android 架构背景下的实用示例。
概览页面
https://developer.android.google.cn/topic/modularization常见模块化模式页面
https://developer.android.google.cn/topic/modularization/patterns
状态容器和界面状态页面说明您可以在界面层中找到的不同类型的状态容器,以及根据要执行的逻辑类型判断应使用哪种实现。
状态生成页面展示有关如何根据状态变更的来源对界面状态进行建模并公开的最佳实践。
界面层文档
https://developer.android.google.cn/topic/architecture/ui-layer状态容器和界面状态页面
https://developer.android.google.cn/topic/architecture/ui-layer/stateholders状态生成页面
https://developer.android.google.cn/topic/architecture/ui-layer/state-production
界面事件页面
https://developer.android.google.cn/topic/architecture/ui-layer/eventsNavigation 界面事件
https://developer.android.google.cn/topic/architecture/ui-layer/events#navigation-events全新 Navigation 指南
https://developer.android.google.cn/guide/navigation/navigation-type-safety
构建离线优先应用指南
https://developer.android.google.cn/topic/architecture/data-layer/offline-first
新的 ViewModel 文档
利用 ViewModel,您可以将状态容器模式纳入界面层中。我们最近更新了相关文档,其中包含以下内容:
关于 ViewModel 工作原理及适用范围的概览。 如何在不使用适用于使用 Hilt 注入 ViewModel 对象的预构建支持的情况下利用依赖项创建 ViewModel。
关于 ViewModel 的适用范围及启用该支持的 API 的详情。
ViewModel 如何通过 ViewModel 的已保存状态模块在进程终止和恢复的过程中保存状态。
ViewModel
https://developer.android.google.cn/topic/libraries/architecture/viewmodel状态容器模式
https://developer.android.google.cn/topic/architecture/ui-layer/stateholders概览
https://developer.android.google.cn/topic/libraries/architecture/viewmodel使用 Hilt 注入 ViewModel 对象
https://developer.android.google.cn/training/dependency-injection/hilt-jetpack#viewmodels利用依赖项创建 ViewModel
https://developer.android.google.cn/topic/libraries/architecture/viewmodel/viewmodel-factoriesViewModel 的适用范围
https://developer.android.google.cn/topic/libraries/architecture/viewmodel/viewmodel-apisViewModel 的已保存状态模块
https://developer.android.google.cn/topic/libraries/architecture/viewmodel/viewmodel-savedstate
应用性能
通过使用性能库,您可以构建高性能的应用,并有针对性的优化以保持其性能表现,从而提供更好的最终用户体验。
缩短启动时间
基准配置文件
https://developer.android.google.cn/studio/profile/baselineprofiles
在 AGP 7.3 中,基准配置文件工具是完全稳定的,因此您无需使用 alpha 依赖项也可以在应用首次启动时及应用每次更新后滚动时将性能提升 30% 以上。
在 profileinstaller:1.3.0-alpha01 中,您可以使用 ProfileVerifier 检测字段中的配置文件编译。此外,从 Android Studio Flamingo Canary 6 开始,Studio APK Inspector 现在会显示 APK 基准配件文件的内容。
ProfileVerifier
https://developer.android.google.cn/reference/androidx/profileinstaller/ProfileVerifier
准确报告启动指标
启动指标是衡量应用性能的重要组成部分,但是系统 (以及 Benchmark 库) 需要获取标志启动阶段完成的信号才能进行测量。这个信号便是 Activity 对 reportFullyDrawn() 的调用。Activity 1.7.0-alpha01 以 FullyDrawnReporter API 的形式添加了新的 API,允许多个组件在它们准备好交互时进行报告。ComponentActivity 将等待所有组件完成报告后再代表您调用 reportFullyDrawn()。
Activity
https://developer.android.google.cn/jetpack/androidx/releases/activity
在完成启动后向 Android 运行时发送信号,以确保在多帧启动序列中运行的所有代码都包括在内,并优先用于后台编译。
在您的应用应被视为完全绘制启动指标时,向 Macrobenchmark 和 Play Vitals 发送信号,以便跟踪应用性能。
我们新增了两个 Activity Compose API: ReportDrawnWhen 和 ReportDrawnAfter,以使其更方便地从单个可组合项中使用 FullyDrawnReporter。
重组跟踪
我们最近发布了首个 alpha 版的 Jetpack Compose 组合跟踪 (Composition Tracing),这个工具可让您在 Android Studio 系统跟踪记录分析器中查看可组合函数。此功能既有系统跟踪的低干扰性优势,又有组合中函数跟踪的详细程度。通过在 Compose Runtime Tracing 上添加依赖项,您便能够在 Android Studio Flamingo Canary 5 系统跟踪记录中看到重组调用堆栈的跟踪记录,然后点击即可直接导航到代码!您可以参阅相关文档,了解关于此功能以及如何在项目中进行设置的更多内容。
相关文档
https://medium.com/androiddevelopers/jetpack-compose-composition-tracing-9ec2b3aea535
界面库及相关指南
Jetpack Compose
Wear Tiles Material 库
其中包含的组件包括:
Button: 可点击的圆形对象,包含图标、文本或图片 (具有 3 种预定义的尺寸)。 Chip: 可点击的体育场形对象,可以包含图标、主标签和次级标签,并且具有固定的高度和可自定义的宽度。 CompactChip 和 TitleChip: 标准 Chip 的两个变体,但高度不同 (一个较矮,一个较高),可以包含一行文本。 CircularProgressIndicator: 位于屏幕边缘周围的彩色弧线,具有给定的起始角度和结束角度,可描绘一个完整或部分的圆圈,后面显示完整的进度弧。 Text: 使用建议的 Wear Material 排版样式的风格化文本。
Button
https://developer.android.google.cn/reference/androidx/wear/tiles/material/ButtonChip
https://developer.android.google.cn/reference/androidx/wear/tiles/material/ChipCompactChip
https://developer.android.google.cn/reference/androidx/wear/tiles/material/CompactChipTitleChip
https://developer.android.google.cn/reference/androidx/wear/tiles/material/TitleChipCircularProgressIndicator
https://developer.android.google.cn/reference/androidx/wear/tiles/material/CircularProgressIndicatorText
https://developer.android.google.cn/reference/androidx/wear/tiles/material/Text
除组件外,Material 指南中还包含一些推荐的卡片布局。您可以阅读相关博文,了解更多关于 Wear OS Tiles Material 库的信息。
相关博文
https://android-developers.googleblog.com/2022/08/wear-os-tiles-material-library-build-tiles-fast.html
为更多设备添加启动画面
SplashScreen
https://developer.android.google.cn/jetpack/androidx/releases/core#core-splashscreen-1.0.0指南
https://developer.android.google.cn/guide/topics/ui/splash-screen/migrate#migrate_your_splash_screen_implementation官方文档
https://developer.android.google.cn/guide/topics/ui/splash-screen
其他重要更新
Camera
CameraX 库
https://developer.android.google.cn/jetpack/androidx/releases/camera示例代码
https://github.com/androidx/androidx/blob/androidx-main/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MlKitFragment.ktZero-Shutter Lag API
https://developer.android.google.cn/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_ZERO_SHUTTER_LAG
Annotation
Annotation 库
https://developer.android.google.cn/jetpack/androidx/releases/annotation
Annotation 1.5 稳定版本已经完全迁移至 Kotlin 源代码,因此支持特定于 Kotlin 的目标使用网站和其他与 Kotlin 兼容的注解功能。
Kotlin 多平台
我们一直在尝试使 Jetbrains 的 Kotlin 多平台移动版支持跨平台共享代码。我们针对 Android 和 iOS 应用推出了实验性的 Collection 预览版和 DataStore 库。期待您的反馈!您可以查看相关博文,了解更多内容。
Collection
https://developer.android.google.cn/jetpack/androidx/releases/collectionDataStore
https://developer.android.google.cn/topic/libraries/architecture/datastore相关博文
https://android-developers.googleblog.com/2022/10/announcing-experimental-preview-of-jetpack-multiplatform-libraries.html
版本说明
https://developer.android.google.cn/jetpack/androidx/versionsAPI 选取器
https://developer.android.google.cn/jetpack/androidx/explorer?case=popular视频
https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_L3n1j4ajHjJ6QccFUvW1u
也欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。
推荐阅读