0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Jetpack 更新一览 | 2022 Android 开发者峰会

谷歌开发者 来源:未知 2022-12-05 17:50 次阅读

作者 /产品经理 Amanda Alexander


Android Jetpack现代 Android 开发 (Modern Android Development) 的关键组件。Android Jetpack 套件包含超过 100 个库、工具及指南,可帮助开发者遵循最佳实践、减少样板代码,并编写可在各种 Android 版本和设备中一致运行的代码。您可以借助 Android Jetpack 提高工作效率,从而专注于为应用构建独特的功能。

  • 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。


在今年的 Android 开发者峰会上,我们发布了 Jetpack 三个主要领域的更新:
  1. 架构库及相关指南

  2. 应用性能
  3. 界面库及相关指南

我们将为您详细介绍每个领域的更新,并总结我们发布的其他更新。


架构库及相关指南


应用架构库和组件可确保应用的稳健性、可测试性及可维护性。


使用 WorkManager 管理任务

借助 WorkManager 库,您可以轻松调度必须可靠运行的可延期异步任务,例如上传备份或分析。通过这些 API,您可以创建任务并提交给 WorkManager,以便在满足工作约束条件时运行。


  • WorkManager

    https://developer.android.google.cn/jetpack/androidx/releases/work


更新后的 WorkManager2.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 是我们推荐的数据持久化层,它在 SQLite 的基础上提供了一个抽象层,从而提高了平台的易用性和安全性。

  • Room

    https://developer.android.google.cn/jetpack/androidx/releases/room


在 Room 2.5.0-alpha03 中,我们添加了一个新的快捷注解 @Upsert。如果不存在唯一冲突,@Upsert 会尝试插入实体;如果存在冲突,@Upsert 则会尝试更新实体。此外,所有的 Room 运行时 API 以及 androidx.sqlite 都已转换为 Kotlin。这样不仅可以为 Kotlin 用户打造更好的体验 (如严格的可为 null 性),还打开了支持其他 Kotlin 语言功能的大门。


Android 13 Activity API 现已支持向后兼容

Activity 库包含 ComponentActivity 类 (构建在 Android 框架的 Activity 类之上的基类)。它不仅可为 Jetpack Compose 和其他架构组件提供 API 支持,还支持通过 Activity 1.6.1 向后移植 Android 13 中引入的新功能。

  • Activity

    https://developer.android.google.cn/jetpack/androidx/releases/activity#version_160_3


通过直接使用 ComponentActivity,或 FragmentActivityAppCompatActivity 的任一子类,您可以使用单个 API 来通过照片选择器选择图像,但前提是它可以自动回退到存储访问框架以支持向后兼容 Android 4.4 (API 19)。


  • 照片选择器

    https://developer.android.google.cn/training/data-storage/shared/photopicker


您只需升级到 Activity 1.6.1 即可体验 Android 13 中引入的预测性返回手势,从而为未来做好准备。Activity API 提供用于自定义返回导航的单个 API。该 API 不仅可向后兼容 API 14,且完全兼容选择预测性返回手势。


  • 预测性返回手势

    https://developer.android.google.cn/guide/navigation/predictive-back-gesture

  • 自定义返回导航

    https://developer.android.google.cn/guide/navigation/navigation-custom-back


使用 Paging 测试库测试分页


Paging 库支持加载海量数据集。为了充分利用 Paging,集成包括应用的多个层,如代码库层、ViewModel 层和界面层。

  • Paging

    https://developer.android.google.cn/topic/libraries/architecture/paging/v3-overview


为了更轻松地测试该集成,Paging 3.2.0-alpha03 引入了带有测试特定 API 的新分页测试工件,从而可以单独测试每个层。此首个版本重点关注代码库层,特别是通过新的 TestPager API 测试自定义 PagingSource,以确保您可以在非常难以通过集成测试再现的不同场景中测试分页源。

  • 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


为响应大量用户的需求,我们已将界面事件页面更新为包含 Navigation 界面事件示例。我们还发布了关于为 Kotlin DSL 和 Navigation Compose 提供运行时类型安全的全新 Navigation 指南

  • 界面事件页面

    https://developer.android.google.cn/topic/architecture/ui-layer/events

  • Navigation 界面事件

    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-factories

  • ViewModel 的适用范围

    https://developer.android.google.cn/topic/libraries/architecture/viewmodel/viewmodel-apis

  • ViewModel 的已保存状态模块

    https://developer.android.google.cn/topic/libraries/architecture/viewmodel/viewmodel-savedstate


更新后的指南帮助您更轻松地了解何时适合使用 ViewModel 来构建界面层。


应用性能


通过使用性能库,您可以构建高性能的应用,并有针对性的优化以保持其性能表现,从而提供更好的最终用户体验。


缩短启动时间

应用的启动时间对用户体验有着很大的影响,特别是在应用安装完成后立即使用时尤为明显。为了提升首次启动时的体验,我们一直在不断地优化基准配置文件。基准配置文件允许应用和库向 Android 运行时提供关于代码路径使用情况的元数据,从而确定编译的优先级。这一配置文件会对依赖库的数据进行聚合,以 baseline.prof 文件的形式放入应用的 APK 中,并且随后会在安装时用于实现应用的部分预编译以及用于静态链接库代码中。这会提升您的应用加载速度,并且可以在用户首次与应用交互时减少丢帧。


  • 基准配置文件

    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


这些 API 可以:
  • 在完成启动后向 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

Jetpack Compose 是 Android 用于构建原生界面的现代工具包,已发布 Jetpack Compose 2022 年 10 月版本,其中包含诸多性能改进,还支持交错网格、直接在画布中绘制文本,以及下拉刷新。我们还发布了首个 Bill of Materials (BOM),以简化向 Gradle 依赖项添加 Compose 库版本的流程。如需了解详情,您可以查看我们的文章《Jetpack Compose 更新一览 | 2022 Android 开发者峰会》。


Wear Tiles Material 库

适用于 Wear OS 的卡片能让用户对各种信息和操作一目了然。为了帮助您创建卡片,我们推出了 Tiles Material 库,其中包括对适用于 Wear OS 的 Material Design 的内置支持。

其中包含的组件包括:

  • Button: 可点击的圆形对象,包含图标、文本或图片 (具有 3 种预定义的尺寸)。
  • Chip: 可点击的体育场形对象,可以包含图标、主标签和次级标签,并且具有固定的高度和可自定义的宽度。
  • CompactChipTitleChip: 标准 Chip 的两个变体,但高度不同 (一个较矮,一个较高),可以包含一行文本。
  • CircularProgressIndicator: 位于屏幕边缘周围的彩色弧线,具有给定的起始角度和结束角度,可描绘一个完整或部分的圆圈,后面显示完整的进度弧。
  • Text: 使用建议的 Wear Material 排版样式的风格化文本。

  • Button
    https://developer.android.google.cn/reference/androidx/wear/tiles/material/Button
  • Chip
    https://developer.android.google.cn/reference/androidx/wear/tiles/material/Chip
  • CompactChip
    https://developer.android.google.cn/reference/androidx/wear/tiles/material/CompactChip
  • TitleChip
    https://developer.android.google.cn/reference/androidx/wear/tiles/material/TitleChip
  • CircularProgressIndicator
    https://developer.android.google.cn/reference/androidx/wear/tiles/material/CircularProgressIndicator
  • Text
    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


为更多设备添加启动画面

从 API 23 开始,核心 SplashScreen 库将新的 Android 12 启动画面引入所有设备。借助启动画面库,您的应用无需使用任何自定义 SplashScreen Activity 即可利用正确的 API 实现应用快速启动。只需按指南中所述的步骤操作,即可使用启动画面库。您可以访问官方文档,获取有关 Android 12 启动画面的更多信息。


  • 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 库,您可以更轻松地为应用添加相机功能。在 1.2.0-beta01 版本中,我们添加了新库 camera-mlkit-vision。利用此库,您可以将 CameraX 与许多 MLKit 功能轻松集成,包括条形码扫描、人脸检测、文本检测等。您可以访问相关网站,查看示例代码。我们还添加了新的实验性 Zero-Shutter Lag API。它可以优化捕捉 pipeline 以在保持良好图像质量的同时降低延迟。


  • 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.kt

  • Zero-Shutter Lag APIhttps://developer.android.google.cn/reference/androidx/camera/core/ImageCapture#CAPTURE_MODE_ZERO_SHUTTER_LAG


Annotation

Annotation 库会公开元数据,从而帮助工具开发者和其他开发者理解应用的代码。Annotation 库提供可与 lint 检查配合使用的熟悉注解 (如 @NonNull),以提高代码的正确性和易用性。

  • 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/collection

  • DataStore

    https://developer.android.google.cn/topic/libraries/architecture/datastore

  • 相关博文

    https://android-developers.googleblog.com/2022/10/announcing-experimental-preview-of-jetpack-multiplatform-libraries.html


以上内容便是 Jetpack 在过去几个月的所有重要更新。您可以查看 AndroidX 版本说明,了解每个 Jetpack 库的更多详情;如需快速找到相关库,您可以使用 API 选取器;如需了解其他精彩内容,您可以观看 2022 Android 开发者峰会中的相关视频

  • 版本说明

    https://developer.android.google.cn/jetpack/androidx/versions

  • API 选取器

    https://developer.android.google.cn/jetpack/androidx/explorer?case=popular

  • 视频

    https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_L3n1j4ajHjJ6QccFUvW1u


也欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。




 点击屏末||即刻了解 Jetpack 更多相关内容




原文标题:Jetpack 更新一览 | 2022 Android 开发者峰会

文章出处:【微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    5803

    浏览量

    103144

原文标题:Jetpack 更新一览 | 2022 Android 开发者峰会

文章出处:【微信号:Google_Developers,微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Android 15的首个开发者预览版现已发布

    Android 15 的首个开发者预览版现已发布,以便各位开发者能与我们通力协作,打造更优秀的 Android 平台。
    的头像 发表于 03-12 14:16 269次阅读
    <b class='flag-5'>Android</b> 15的首个<b class='flag-5'>开发者</b>预览版现已发布

    Testin云测国内首发Android 15开发者预览版云真机

    Android 15来了,Testin云测助您快速抢占先机! 目前,谷歌已发布了Android 15的第一个开发者预览版本(Android 15 Developer Preview 1
    的头像 发表于 02-24 09:33 474次阅读
    Testin云测国内首发<b class='flag-5'>Android</b> 15<b class='flag-5'>开发者</b>预览版云真机

    谷歌Android 15开发者预览版遇问题,OTA更新暂停

    谷歌在Android Developer官网发表声明,因发现“已知问题”,将暂时关闭Android 15 DP1的OTA更新订阅服务。谷歌解释道:“禁用OTA镜像下载是为了深入调查问题。”对于想要尝鲜
    的头像 发表于 02-21 14:08 129次阅读

    鸿蒙开发者预览版如何?

    、原生智能、原生互联,6大极致原生体验。 我初步阅读了鸿蒙的源码后,基本上可以确定是全自研底座,已经看不到Android的身影了。作为开发者,如果想往鸿蒙方向发展,就需要系统性学起。鸿蒙的知识体系如下
    发表于 02-17 21:54

    鸿蒙系统优缺点,能否作为开发者选择

    开发的岗位需求,尤其在这个大环境不好的情况下,会引出更多岗位。 鸿蒙的开发岗位,不会内卷、薪资高、岗位多。对于开发者非常友好。 新型操作系统,比Android、ios更加安全实用。
    发表于 02-16 21:00

    您有份OpenHarmony开发者论坛2023年度总结,请查收~

    2023 年 11 月,OpenHarmony 开发者论坛 1.0 版本正式上线。 感谢各位开发者对 OpenHarmony 的大力支持和热爱,成为 OpenHarmony 开发者论坛的第
    发表于 01-26 17:27

    HarmonyOS SDK,助力开发者打造焕然新的鸿蒙原生应用

    六大领域的开发能力,为开发者带来简洁、高效的开发体验,开发者只需通过 API 调用即可实现丰富的鸿蒙原生应用功能和独特体验。同时,在开发
    发表于 01-19 10:31

    欢迎加入飞腾派开发者社区,感谢每开发者

    发烧友论坛起策划了飞腾派开发板测评活动,受到了广大开发者的喜爱。 通过这次活动,飞腾派成功地吸引了众多高质量开发者的关注和参与,进步扩
    发表于 12-11 16:11

    OpenHarmony北向-让更广泛的应用开发者更容易参与

    、标准系统的体验 按照官方文档指导,这样操作,OH标准系统开发板就可以运行开发者开发的OpenHarmony应用了。 二、实际情况 按照开发
    发表于 12-06 14:32

    Jetpack WindowManager 1.1 稳定版

    作者 / Android 开发者关系工程师 Francesco Romano 自 Jetpack WindowManager 1.0 稳定版发布的一年多以来,可折叠设备和大屏设备领域发生了诸多
    的头像 发表于 10-18 19:10 186次阅读
    <b class='flag-5'>Jetpack</b> WindowManager 1.1 稳定版

    各位开发者期待已久的开源鸿蒙开发者手机已经开放购买啦!!

    各位开发者期待已久的开源鸿蒙开发者手机已经开放购买啦!! “开源鸿蒙开发者手机”,本质上是手机形态的开发板,为广大 OpenHarmony 开发者
    发表于 10-10 18:32

    在 I/O 看未来 | Android 平台和质量更新一览

    作者 / 开发者关系工程师 Dan Galpin Google I/O 大会 是一场开发者的盛会,在此期间,我们向大家展示了与平台各方面相关的 精彩内容 ,其中大多数围绕应用质量。本文将为您带来
    的头像 发表于 07-04 17:45 248次阅读
    在 I/O 看未来 | <b class='flag-5'>Android</b> 平台和质量<b class='flag-5'>更新</b><b class='flag-5'>一览</b>

    在 I/O 看未来 | Jetpack 新功能一览

    组成支柱。Android Jetpack 套件包含超 100 个库、工具及指南,可帮助开发者遵循最佳实践、减少样板代码,并编写可在各种 Android 版本和设备中一致运行的代码,以便
    的头像 发表于 06-01 01:20 222次阅读
    在 I/O 看未来 | <b class='flag-5'>Jetpack</b> 新功能<b class='flag-5'>一览</b>

    2023开放原子全球开源峰会报名开启!

    开放原子全球开源峰会 开放原子全球开源峰会是开放原子开源基金会本着以开发者为本的开源项目孵化平台、科技公益性服务机构的定位,立足中国,面向世界发起的大会,峰会依托国际化平台,聚集政、
    发表于 05-29 17:05

    华为:鲲鹏已拥有4500家合作伙伴,吸引超过200万名开发者加入

    鲲鹏昇腾开发者峰会2023在东莞松山湖开幕,华为ICT产品组合管理与解决方案部总裁马海旭在会上表示,鲲鹏已拥有4500家合作伙伴,吸引了超过200万名开发者加入,同时已有13500多个解决方案通过
    发表于 05-06 15:31