Android Jetpack 到底是什么?

What exactly is Android Jetpack?

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

在其官方网站上,它说:

Android Jetpack is a set of libraries, tools and architectural guidance to help make it quick and easy to build great Android apps. It provides common infrastructure code so you can focus on what makes your app unique

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

这就是为什么所有非 Android 扩展库(如支持等)都重新打包到 androidx.** 的原因。

Quote from Alan Viverette (from Android Framework Team):

Jetpack is a larger-scoped effort to improve developer experience, but AndroidX forms the technical foundation. From a technical perspective, it's still the same libraries you'd have seen under Support Library and Architecture Components.

As best practices change, you may also see libraries in the androidx.* package that are not included in Jetpack.

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

来自the blog:

Android Jetpack is the next generation of Android components, bringing together the benefits of the Support Library -- backwards compatibility and immediate updates -- to a larger set of components, making it quick and easy to build robust, high quality apps. Android Jetpack manages activities like background tasks, navigation, and lifecycle management, so you can eliminate boilerplate code and focus on what makes your app great. Android Jetpack is designed to work well with Kotlin, saving you even more code with Android KTX. The new Android Jetpack components released today include WorkManager, Paging, Navigation, and Slices.

来自official doc:

Android Jetpack is a set of libraries, developer tools and architectural guidance to help make it quick and easy to build great Android apps. It provides common infrastructure code so you can focus on what makes your app unique.

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

Foundation

Architecture

Behavior

UI

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

  1. Android Ktx

    AndroidKTX的目的是让Android用Kotlin开发更多 通过利用 Kotlin 语言特性,简洁、愉快和惯用,例如 作为扩展 functions/properties、lambda、命名参数和参数 默认值

  2. Navigation

    导航架构组件简化了 Android app.This 中的导航与实现清晰的流程有关 你的应用程序。 Here 在此视频中,您可以找到关于 这个话题。

  3. Paging

    Paging Library让您更轻松地逐步加载数据并 优雅地在您应用的 RecyclerView 中。 Here is the I/O talk 来自 Yigit Boyar,他解释的很好

  4. Slices

    切片是 UI 可以显示丰富、动态和交互式内容的模板 从您的应用程序在 Google 搜索应用程序中,然后在其他地方,如 Google 助手。 Slices 可以通过启用帮助用户更快地执行任务 全屏应用程序体验之外的参与。您可以将切片构建为 增强应用程序操作。 Learn more from this talk

  5. WorkManager [我个人推荐你去看看这个东西]

    您可以使用 WorkManager.The WorkManager API 优雅地安排任务 易于指定可延迟的异步任务以及它们应该何时 运行。这些 APIs 让您创建一个任务并立即将其交给 WorkManager 到 运行 或 在适当的时候。 This Video 深入解释。

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

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

这些软件组件有助于:

  • 遵循最佳实践并编写样板代码。
  • 化繁为简。

之前有很多挑战如下:

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

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

所以,所有问题的解决方案就是 Andriod Jetpack。

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

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

Android Jetpack 组件

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

这些软件组件分为以下 4 个类别:

  • 基础组件
  • 架构组件
  • 行为组件
  • UI 组件

让我们一一来看。

基础组件

基础组件提供以下内容:

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

所有基础组件如下:

  • 应用程序兼容性
  • Android KTX
  • 多索引
  • 测试

架构组件

架构组件帮助我们构建:

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

所有架构组件如下:

  • 数据绑定
  • 生命周期
  • LiveData
  • 导航
  • 分页
  • 房间
  • 视图模型
  • 工作管理器

行为组件

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

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

所有行为组件如下:

  • 下载管理器
  • 媒体和播放
  • 通知
  • 权限
  • 首选项
  • 分享
  • 切片

UI 组件

UI 组件提供小部件和帮助程序,使您的应用不仅简单,而且使用起来愉快。

所有UI个组件如下:

  • 动画和过渡
  • 自动
  • 表情符号
  • 片段
  • 布局
  • 调色板
  • 电视
  • 穿

Reference article

正如我们都在引用官方网站所说的那样,

Android Jetpack provides a series of unbundled libraries not tied to any particular version of Android, giving developers a way to support newer features on older versions of the Android operating system. In addition to backward compatibility, Jetpack promises to help you get more done, with less code, by providing the boilerplate to handle repetitive tasks like managing the application lifecycle.

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

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

Those frustrating “All com.android.support libraries must use the exact same version specification” messages should become a thing of the past now.

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

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

单独出JetPack还有其他原因,我们也来讨论一下吧..

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

  2. 根据当前的命名约定(支持的),还不清楚哪些包与 Android 操作系统捆绑在一起,哪些与应用程序的 APK 打包在一起(Android 套件)。为了消除这种混淆,所有未捆绑的库都将移至 AndroidX 的 androidx.* 命名空间,而 android.* 包层次结构将保留给随附的包Android 操作系统。简单地说,现在 android.* 将保留给 android 与操作系统相关的包,因此这些包无论如何都会以 android.* 包名称 WHILE androidx 开头.* 现在将保留用于应用程序开发相关的内容。

  3. 除此之外,您还有:

  • 架构组件
  • 基础组件
  • UI分量
  • 行为组件

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

Android Jetpack 是一组库,可让 android 开发人员的工作变得轻松。 Android 开发也可以在没有 jetpack 的情况下完成,但它使您的应用程序更加模块化、应用程序 life-cycle 感知并且更可测试。

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

Android Jetpack 组件

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

这些软件组件分为以下 4 个类别:

  • 基础组件
  • 架构组件
  • 行为组件
  • UI 组件

架构组件

所有架构组件如下:

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

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

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

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

  • WorkManager 满足您的后台调度需求。
  • 数据存储持久化空间。
  • 用于管理您的应用程序导航流程的导航。
  • 满足您的相机应用需求的 CameraX。

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

  • 基础组件
  • 架构组件
  • 行为组件
  • UI 组件

Foundation Components - Foundation Components provide Backward compatibility, Testing, Kotlin support.

基础组件是:

  • App Compat:Jetpack Foundation 中的 AppCompat 库包含 v7 库中的所有组件。 这包括 AppCompat、Cardview、GridLayout、MediaRouter、Palette、RecyclerView、Renderscript、Preferences、Leanback、Vector Drawable、Design、自定义选项卡等。 此外,该库为 material 设计用户界面提供实现支持,这使得 AppCompat 对开发人员非常有用。
  • Android KTX: KTX stands for Kotlin Extensions ,Android KTX 包含一组 Kotlin 扩展,旨在方便开发者去除样板代码 以及在使用 Kotlin 语言开发 android 应用程序时编写简洁的代码。
  • Multidex: Dex 是 运行 在 Android 虚拟机(称为 Dalvik)上的可执行文件的格式。 Multidex 组件还提供对应用程序的集体 dex 文件的支持。
  • Test:包括用于 运行time UI 测试的 Espresso UI 测试框架和用于Android 应用程序单元测试的目的。

Architecture Componets helps in building robust apps.It does not support any particular architecture pattern but suggests clear separation of concerns and controlling of UI from Model by which developers can avoid problems related to activity lifecycle.

架构组件是:

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

    1.Entity

    2.Data 访问对象

    3.Database

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

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

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

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

  • Navigation Component-Navigation Component 具有其他架构组件的所有优点,如 Lifecycle 和 ViewModel。它有助于实现基本的导航样式,如简单的按钮点击到复杂的导航模式,如应用栏和导航 drawer.Further,它还支持深度链接和帮助程序,使该组件能够与导航抽屉和底部导航连接。它 通过动画可视化简化过渡,支持深度链接,处理片段事务,支持常见和复杂的导航模式

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

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

Behaviour Components- Behavior components help in the integration with standard Android services like Notifications,Permissions,Sharing,Assistant.

行为组件是:

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

UI Components-The UI components provide widgets and helpers that aim to improve the interactions that users have with Android applications.

UI 组件是:

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

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

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

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

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

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

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

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