66

我看过 Google I/O 2018 的开发者主题演讲,也看过 Android 开发者网站上的 jetpack 主页,但我无法理解它到底是什么。对我来说,这似乎只是我们已经使用的一堆 API 的新名称。IDE 是否会为我们做一些事情或在编码时会有所帮助?Jetpack 中的所有组件都指向其原始的 Android 文档,并且实际上与以前没有任何区别。有人可以简单地解释一下 Jetpack 对我作为开发人员的实际作用,除了在网页上加入俱乐部文档吗?

4

9 回答 9

45

在其官方网站上,它说:

Android Jetpack 是一组库、工具和架构指南,可帮助您快速轻松地构建出色的 Android 应用程序。它提供了通用的基础架构代码,因此您可以专注于使您的应用与众不同的原因

从技术上讲,它是将支持库、android-ktx 和 Android 架构组件重新命名为单个模块化“实体”。

这就是为什么所有非 Android 扩展库(如 support 等)都重新打包为androidx.**.

引用 Alan Viverette(来自 Android 框架团队):

Jetpack 是一项旨在改善开发人员体验的更大范围的努力,但 AndroidX 构成了技术基础。从技术角度来看,它仍然是您在支持库和架构组件下看到的相同库。

随着最佳实践的变化,您可能还会看到 androidx.* 包中未包含在 Jetpack 中的库。

有关更多信息,请参阅https://developer.android.com/topic/libraries/support-library/refactor

于 2018-05-09T10:58:01.007 回答
24

基本上它只是一组有用的东西组合起来并在 4 个类别下排序

基础

建筑学

行为

用户界面

现在在相关类别中添加了一些核心内容,如AppCompat 库、架构组件、片段、动画和过渡等等,这 5 个内容是新添加的。

  1. 安卓Ktx

    Android KTX 的目的是通过利用 Kotlin 语言特性(例如扩展函数/属性、lambda、命名参数和参数默认值)使使用 Kotlin 进行 Android 开发更加简洁、愉快和惯用

  2. 导航

    导航架构组件简化了 Android 应用中导航的实现。这与在您的应用中实现清晰的流程有关。在此视频中,您可以找到有关此主题的非常好的解释。

  3. 寻呼

    分页库使您可以更轻松地在应用程序的 RecyclerView 中逐渐优雅地加载数据。这是 Yigit Boyar 的 I/O 演讲,他解释得很好。

  4. 切片

    切片是 UI 模板,可以在 Google 搜索应用程序中显示来自您的应用程序的丰富、动态和交互式内容,然后在其他地方(如 Google 助理)显示。通过在全屏应用体验之外实现参与,切片可以帮助用户更快地执行任务。您可以构建 Slices 作为 App Actions 的增强功能。从本次演讲中了解更多信息

  5. WorkManager [我个人建议你检查一下这个东西]

    您可以使用 WorkManager 优雅地安排任务。WorkManager API 可以轻松指定可延迟的异步任务以及它们应该何时运行。这些 API 让您可以创建任务并将其交给 WorkManager 以立即或在适当的时间运行。这个视频深入解释了它。

    我在这里创建了一个播放列表。它包含与 Jetpack 相关的所有最佳视频,希望对您有所帮助。

于 2018-05-12T14:24:15.737 回答
17

Android Jetpack 是一组 Android 软件组件,可帮助我们构建出色的 Android 应用程序。

这些软件组件有助于:

  • 遵循最佳实践并编写样板代码。
  • 让复杂的事情变得非常简单。

早些时候有许多挑战,如下所示:

  • 管理活动生命周期。
  • 幸存的配置更改。
  • 防止内存泄漏。

Android Jetpack 的软件组件解决了所有这些主要问题。

因此,所有问题的解决方案都是 Andriod Jetpack。

关于 Jetpack 的另一个最重要的事情是它比 Android 平台更新更频繁,因此我们总是能获得最新版本。

Jetpack 包含 androidx.* 包库,与平台 API 不捆绑。这意味着它提供了向后兼容性。

Android Jetpack 组件

Android Jetpack 组件是一组库,可单独采用并构建为协同工作,同时利用 Kotlin 语言功能提高我们的工作效率。

这些软件组件分为 4 类,如下所示:

  • 基础组件
  • 架构组件
  • 行为组件
  • 用户界面组件

让我们一一看看。

基础组件

基础组件提供以下功能:

  • 向后兼容性
  • 测试
  • Kotlin 语言支持。

所有基础组件如下:

  • 应用兼容
  • 安卓KTX
  • 多索引
  • 测试

架构组件

架构组件帮助我们构建:

  • 强大的应用程序
  • 可测试的应用程序
  • 可维护的应用程序

所有架构组件如下:

  • 数据绑定
  • 生命周期
  • 实时数据
  • 导航
  • 寻呼
  • 房间
  • 视图模型
  • 工作经理

行为组件

行为组件有助于与标准 Android 服务集成,例如

  • 通知
  • 权限
  • 分享
  • 助手

所有行为组件如下:

  • 下载管理器
  • 媒体和播放
  • 通知
  • 权限
  • 喜好
  • 分享
  • 切片

用户界面组件

UI 组件提供了小部件和帮助程序,使您的应用程序不仅易于使用,而且使用起来令人愉悦。

所有 UI 组件如下:

  • 动画和过渡
  • 汽车
  • 表情符号
  • 分段
  • 布局
  • 调色板
  • 电视
  • 穿

参考文章

于 2019-01-06T04:37:30.027 回答
14

来自博客:

Android Jetpack 是下一代 Android 组件,将支持库的优势(向后兼容性和即时更新)汇集到更大的组件集,从而可以快速轻松地构建强大、高质量的应用程序。Android Jetpack 管理后台任务、导航和生命周期管理等活动,因此您可以消除样板代码并专注于使您的应用程序出色的地方。Android Jetpack 旨在与 Kotlin 完美配合,使用 Android KTX 为您节省更多代码。今天发布的新 Android Jetpack 组件包括 WorkManager、Paging、Navigation 和 Slices。

来自官方文档:

Android Jetpack 是一组库、开发人员工具和架构指南,可帮助您快速轻松地构建出色的 Android 应用程序。它提供了通用的基础架构代码,因此您可以专注于使您的应用与众不同的原因。

在此处输入图像描述

于 2018-05-09T13:43:07.157 回答
6

Android Jetpack 组件

Android Jetpack 组件是一组库,可单独采用并构建为协同工作,同时利用 Kotlin 语言功能提高我们的工作效率。

这些软件组件分为 4 类,如下所示:

  • 基础组件
  • 架构组件
  • 行为组件
  • 用户界面组件

架构组件

所有架构组件如下:

  • 数据绑定:以声明方式将布局中的 UI 元素绑定到应用程序的数据源。
  • 生命周期:管理我们应用程序的活动和片段生命周期。
  • LiveData:通知任何数据库更改的视图。
  • 导航:处理应用内导航所需的一切。
  • 分页:逐渐从数据源按需加载信息。
  • Room:流畅的 SQLite 数据库访问。
  • ViewModel:以生命周期意识的方式管理与 UI 相关的数据。
  • WorkManager:根据我们选择的情况管理 Android 中的每个后台作业。

有关更多详细信息,请使用以下链接:- https://blog.mindorks.com/what-is-android-jetpack-and-why-should-we-use-it

于 2021-03-26T10:42:06.950 回答
6

正如我们都在引用官方网站,它说,

Android Jetpack 提供了一系列未绑定到任何特定 Android 版本的非捆绑库,为开发人员提供了一种在旧版本 Android 操作系统上支持新功能的方法。除了向后兼容性之外,Jetpack 还承诺通过提供样板来处理重复性任务(例如管理应用程序生命周期),帮助您用更少的代码完成更多工作。

所以现在让我们把它分解成碎片,它只说了两件事

  1. 因此,Jetpack 下的所有库都是相互独立的。您可以更新任何特定库而不同时更新其他库。你记得那些警告,

那些令人沮丧的“所有 com.android.support 库必须使用完全相同的版本规范”消息现在应该成为过去。

但那是当您使用Androidx库而不是Support库时。

  1. 现在 Jetpack 下的所有这些库都在他们身边做了很多样板代码,所以你不需要写很多代码,只需要担心逻辑。前 - 还记得处理屏幕旋转吗?(ViewModel负责),通过分页处理无限滚动?(现在你有Paging库),处理返回按钮(导航库为你准备),手动处理依赖注入或使用 Dagger(Hilt是你的朋友),处理相机的不同用例并仍然修复生产中的错误(CameraX是一个简单的方法)(只是其中的几个)

单独推出 JetPack 也有其他原因,让我们也讨论一下。

  1. 最初,每个包的名称表示该包支持的最低 API 级别,例如 support-v4。但是,支持库的 26.0.0 版本将最低 API 增加到 14,因此今天许多包名称与最低支持的 API 级别无关。当 support-v4 和 support-v7 包都具有 14 的最低 API 时,很容易看出人们为什么会感到困惑!。所以现在有了 AndroidX,这种困惑就消失了。

  2. 使用当前的命名约定(支持的),也不清楚哪些软件包与 Android 操作系统捆绑在一起,哪些与您的应用程序的 APK(Android 软件包工具包)打包在一起。为了消除这种混乱,所有未捆绑的库都将移至 AndroidX 的 androidx.* 命名空间,而 android.* 包层次结构将保留给 Android 操作系统附带的包。简单地说,现在,android.* 将保留给与 android 操作系统相关的包,所以这些包无论如何都会以 android.* 包名开头,而 androidx.* 现在将保留给与应用程序开发相关的东西。

  3. 除此之外,您还有:

  • 建筑构件
  • 基础组件
  • 界面组件
  • 行为组件

所以现在,Jetpack 只不过是这些组件、androidx 和其他工具的超集的名称。

于 2019-07-30T07:16:58.763 回答
2

Android Jetpack 是一组 Android 软件组件,可帮助我们构建出色的 Android 应用程序。Android Jetpack 组件是一个库的集合,是帮助开发强大的 android 应用程序的工具。Jetpack 包含 androidx.* 包库,与平台 API 不捆绑。这意味着它提供了向后兼容性。软件组件分为 4 类:

  • 基础组件
  • 架构组件
  • 行为组件
  • 用户界面组件

基础组件 - 基础组件提供向后兼容性、测试、Kotlin 支持。

基础组件是:

  • App Compat:Jetpack 基础中的 AppCompat 库包含 v7 库中的所有组件。这包括 AppCompat、Cardview、GridLayout、MediaRouter、Palette、RecyclerView、Renderscript、Preferences、Leanback、Vector Drawable、Design、Custom tabs 等。此外,该库为 Material Design 用户界面提供了实现支持,这使得 AppCompat 对于开发商。
  • Android KTX:KTX 代表 Kotlin Extensions ,Android KTX 由一组 Kotlin 扩展组成,旨在帮助开发人员在使用 Kotlin 语言开发 android 应用程序时删除样板代码以及编写简洁的代码。
  • Multidex:Dex是运行在Android虚拟机(称为Dalvik)上的可执行文件的格式。Multidex 组件还为应用程序的集体 dex 文件提供支持。
  • 测试:包括用于运行时 UI 测试的 Espresso UI 测试框架和用于 Android 应用程序单元测试的 AndroidJUnitRunner。

架构组件有助于构建健壮的应用程序。它不支持任何特定的架构模式,但建议将关注点和 UI 与模型的控制明确分离,这样开发人员可以避免与活动生命周期相关的问题。

架构组件是:

  • Room - Room 组件充当 SQLite 对象映射库,它克服了使用 SQLite 带来的挑战,例如在编译时检查查询、编写样板代码。Room 将查询直接转换为对象,在编译时检查查询中的错误,并且还能够持久化 Java POJO。子组件是:

    1.实体

    2.数据访问对象

    3.数据库

  • WorkManager - 管理 Android 中的后台任务,这些任务是可延迟的(可以稍后运行并且仍然有用)以及有保证的(即使设备重新启动也会运行)。它提供向后兼容性,可以调度和链接任务,用户可以跟踪/跟踪任务的状态。

  • LifeCycles - androidx.lifecycle包组件执行操作以响应另一个组件的生命周期状态的变化,例如活动和片段。这些组件可帮助您生成组织更好且通常更轻量级的代码,更易于维护。这有助于创建有组织的应用程序组件,简化组件的测试和维护,减少执行任务的代码需求。

  • ViewModel - 以生命周期意识的方式管理与 UI 相关的数据。它有助于在配置更改期间进行数据管理,减少 UI 错误和崩溃。

  • LiveData - Livedata 通知 UI 数据中的任何适当更改。如果观察者的生命周期状态被破坏,LiveData 能够将其移除,从而避免内存泄漏。它删除了停止或破坏的活动,从而减少了应用程序崩溃的机会。

  • 导航组件- 导航组件获得其他架构组件以及生命周期和 ViewModel 的所有好处。它有助于实现基本的导航样式,如简单的按钮点击到复杂的导航模式,如应用程序栏和导航抽屉。此外,它还支持深度链接和帮助程序,使该组件能够与导航抽屉和底部导航连接。它通过动画可视化简化了过渡,支持深度链接、处理片段事务、支持通用以及复杂的导航模式

  • Paging - 这个库提供了以谨慎的方式缓慢加载应用程序数据的工具。易于与 Recycler View 集成以显示大型数据集,兼容 LiveData 和 RxJava 用于更新 UI 数据,谨慎逐步加载数据。

  • 数据绑定- 数据绑定库是一个支持库,它提供了将活动/片段中的 UI 组件绑定到应用程序的数据源的功能。通过删除活动中调用的 UI 框架使代码更简单和易于维护。它还允许类和方法观察数据的变化,并允许将对象和填充作为可观察的集合。

行为组件 - 行为组件有助于与标准 Android 服务集成,例如通知、权限、共享、助手。

行为组件是:

  • 下载管理器:DownloadManager 是 Android 中的一项系统服务,可帮助在后台线程中下载大容量文件。它通过自动重试支持在后台安排和管理大型下载。
  • 媒体和播放:Jetpack 为 Android 多媒体框架提供了向后兼容的 API。包含的媒体库有助于开发人员将音频、视频和图像文件集成到应用程序中 向后兼容的 API 用于媒体播放和路由(包括 Google Cast)。
  • Notifications:提供向后兼容的通知 API,支持 Wear 和 Auto。
  • Permissions:用于在应用程序中检查和请求权限的兼容性 API。
  • 首选项:创建交互式设置屏幕供用户配置。
  • Sharing:提供适合应用程序操作栏的分享操作。ShareActionProvider 类用于执行分享内容和信息的任务。
  • Slices:创建灵活的 UI 元素,可以在应用程序外部显示应用程序数据,并且可以一直扩展到 Android 4.4。

UI 组件——UI 组件提供小部件和帮助程序,旨在改善用户与 Android 应用程序的交互。

UI 组件是:

  • 动画和过渡:Jetpack 提供 API 来设置可用于 Android 应用程序的不同类型的动画。该框架赋予了移动小部件以及在应用程序中通过动画和过渡在屏幕之间切换的能力。

  • Auto:开发 Android Auto 应用程序的组件。可以在 Android Auto 上构建、测试和分发以下类别的应用程序:导航应用程序、消息应用程序、媒体应用程序。

  • 表情符号:在旧平台上启用更新的表情符号字体。Google 发布了名为 EmojiCompat 的新库,以处理 emoji 字符并使用可下载的字体支持。该库的向后兼容性高达 Android 4.4(API 级别 19)。

  • Fragment:表示用户界面的行为或部分,用于动态和灵活的 UI 设计(并减少样板布局和代码)。

  • 布局:用于创建和设计用户界面的结构。

  • 调色板:用于设计布局主题并将自定义颜色应用于应用程序的元素。

  • TV:用于开发 Android TV 应用程序的组件。

  • Wear:为帮助开发 Wear 应用而创建的组件。

于 2021-03-30T05:13:00.000 回答
2

Android Jetpack 是一组库,可帮助您应对作为 Android 开发人员最终面临的挑战 - 编写样板代码、管理活动生命周期、应对配置更改或防止内存泄漏。

Jetpack 库可以单独使用或组合使用,以满足您应用程序中的不同需求。

  • WorkManager 满足您的后台调度需求。
  • 数据存储持久性的空间。
  • 导航来管理您的应用程序导航流程。
  • CameraX 满足您的相机应用需求。
于 2021-03-26T11:13:45.383 回答
1

Android Jetpack 是一组库,可让 android 开发人员的生活变得轻松。Android 开发也可以在没有 jetpack 的情况下完成,但它为您的应用程序提供了更多模块化、应用程序生命周期感知和更多可测试性。

例如,工作管理器是一个 Jetpack 组件,用于安排任务,当合适的条件满足时(例如插入设备)可能会触发。应用程序也可以在不使用 Workmanager 的情况下开发(使用 Jobschedular),但开发人员将没有更多选择。

于 2020-10-06T17:10:05.523 回答