【问题标题】:What exactly is Android Jetpack?Android Jetpack 到底是什么?
【发布时间】:2018-05-09 10:54:31
【问题描述】:

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

【问题讨论】:

  • 这里有一篇关于它的短文。 techcrunch.com/2018/05/08/android-gets-a-jetpack 上面写着“Jetpack 代表了下一代 Android 支持库”。他们正在整合当前的支持库,稍后将添加更多组件。
  • 他们让它看起来像是他们平台的一个非常大的变化,我无法理解实际上有什么不同。
  • 品牌推广!还重新打包并重新启动版本控制方案。
  • 了解更多,如果你有任何很棒的答案,你也可以编辑android-jetpack tag-wiki :)

标签: android android-jetpack


【解决方案1】:

在其官方网站上,它说:

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

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

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

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

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

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

请参阅https://developer.android.com/topic/libraries/support-library/refactor 了解更多信息。

【讨论】:

  • 感谢您的解释!所以基本上,只是相同的库,现在在一个新的旗帜下。
  • 此时包含两个新的 AAC 组件:Navigation 和 WorkManager。
  • 这个答案不完整。使用 Android Jetpack,您可以使用不同的模型编写应用程序:MVVM(而不是 MVC)
  • @user924 God-Activity 从来都不是 MVC,但是是的,它允许您编写类似 MVVM 的设置;尽管一次性事件的发射很棘手,但您仍然需要将 ViewModel 隐藏在接口后面,以便 View 只能调用其上的方法,例如“onWhateverClicked()”,而不是告诉它要做什么。所以仅仅通过使用 AAC ViewModel,你不一定会得到 MVVM。关于 ViewModel 本质上就像一个保留的片段,而不是实际上的“ViewModel”(更像 data holder),进行了很长时间的讨论,但人们已经接受它是一个(参见 SavedStateHandle) .
  • 观看此视频以全面了解youtu.be/a5q-_3u_cVs
【解决方案2】:

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

基础

架构

行为

用户界面

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

  1. Android Ktx

    Android KTX 的目的是让 Android 开发更多地使用 Kotlin 通过利用 Kotlin 语言功能,简洁、愉快和惯用 作为扩展函数/属性、lambda、命名参数和参数 默认值

  2. Navigation

    导航架构组件简化了 Android 应用中的导航。这与在 你的应用程序。 Here 在这个视频中你可以找到一个很好的解释 这个话题。

  3. Paging

    分页库使您可以更轻松地逐步加载数据,并且 优雅地在您应用的 RecyclerView 中。 Here is the I/O talk 来自 Yigit Boyar,他解释得很好。

  4. Slices

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

  5. WorkManager[我个人建议你看看这个东西]

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

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

【讨论】:

  • 还有MVVM而不是MVC
【解决方案3】:

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

这些软件组件有助于:

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

之前有很多挑战如下:

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

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

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

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

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

Android Jetpack 组件

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

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

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

让我们一一看看。

基础组件

基础组件提供以下功能:

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

所有基础组件如下:

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

架构组件

架构组件帮助我们构建:

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

所有架构组件如下:

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

行为组件

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

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

所有行为组件如下:

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

UI 组件

UI 组件提供小部件和帮助程序,使您的应用不仅易于使用,而且易于使用。

所有UI组件如下:

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

Reference article

【讨论】:

    【解决方案4】:

    来自the blog:

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

    来自official doc:

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

    【讨论】:

      【解决方案5】:

      Android Jetpack 组件

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

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

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

      架构组件

      所有架构组件如下:

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

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

      【讨论】:

        【解决方案6】:

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

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

        所以现在让我们把它分解成小块,它只是说两件事

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

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

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

        1. 现在 Jetpack 下的所有这些库都在其身边执行大量样板代码,因此您无需编写大量代码而只需担心逻辑。前 - 还记得处理屏幕旋转吗? (ViewModel 负责),通过分页处理无限滚动? (现在你有 Paging 库),处理后退按钮(Navigation 库适合你),手动处理依赖注入或使用 Dagger(Hilt 是您的朋友),处理不同的 Camera 用例并仍然修复生产中的错误(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. 除此之外,您还有:

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

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

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

            【解决方案8】:

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

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

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

            基础组件是:

            • App Compat:Jetpack 基础中的 AppCompat 库包含 v7 库中的所有组件。 这包括 AppCompat、Cardview、GridLayout、MediaRouter、Palette、RecyclerView、Renderscript、Preferences、Leanback、Vector Drawable、Design、Custom tabs 等。 此外,该库为材料设计用户界面提供了实现支持,这使得 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 能够将其移除,从而避免内存泄漏。 它会删除停止或销毁的活动,从而减少应用崩溃的机会。

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

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

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

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

            行为组件是:

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

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

            UI 组件是:

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

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

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

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

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

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

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

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

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-12-05
                • 1970-01-01
                • 2019-09-01
                • 2015-09-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多