什么是Android Jetpack?

时间:2018-05-09 10:54:31

标签: android android-jetpack

我已经看过Google I / O 2018的开发者主题演讲,而且我已经在Android开发者网站上阅读了jetpack主页,但我无法理解其实际情况。对我来说,它似乎只是我们已经使用的一堆API的新名称。是否会有IDE为我们做的事情或者在编码时有用的东西? Jetpack中的所有组件都指向他们原来的Android文档,并没有真正展示出与以前相比的任何差异。有人可以简单地解释一下Jetpack实际上对我作为开发人员的作用,除了在网页上添加俱乐部文档吗?

9 个答案:

答案 0 :(得分:28)

在其官方网站上,它说:

  

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

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

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

  

来自Alan Viverette(来自Android Framework团队)的引用:

     

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

     

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

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

答案 1 :(得分:15)

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

  

粉底

     

架构

     

行为

     

UI

现在,相对类别中添加了一些核心内容,如 AppCompat库,架构组件,片段,动画和过渡以及更多内容,并且新增了这5件事。

  1. <强> Android Ktx

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

  2. <强> Navigation

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

  3. <强> Paging

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

  4. <强> Slices

    切片是可以显示丰富,动态和交互式内容的UI模板 来自Google搜索应用中的应用,以及之后的其他地方 Google智能助理。切片可以通过启用帮助用户更快地执行任务 全屏应用体验之外的参与。您可以将切片构建为 App Actions的增强功能。 Learn more from this talk

  5. WorkManager [我个人建议您查看此内容]

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

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

答案 2 :(得分:10)

来自the blog:

  

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

来自official doc:

  

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

enter image description here

答案 3 :(得分:8)

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

这些软件组件可帮助:

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

以前有很多挑战,如下:

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

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

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

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

Jetpack包含androidx。*软件包库,它们与平台API无关。这意味着它提供了向后兼容性。

Android Jetpack组件

Android Jetpack组件是一个库的集合,这些库可以单独采用,并且可以构建相互协作,同时利用Kotlin语言功能使我们的工作效率更高。

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

  • 基金会组成部分
  • 建筑组件
  • 行为组件
  • UI组件

我们一一看。

基金会组成部分

基础组件提供以下内容:

  • 向后兼容
  • 测试
  • 科林语支持。

所有基础组件如下:

  • 应用兼容
  • Android KTX
  • Multidex
  • 测试

建筑组件

架构组件可帮助我们构建:

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

所有体系结构组件如下:

  • 数据绑定
  • 生命周期
  • LiveData
  • 导航
  • 分页
  • 房间
  • ViewModel
  • WorkManager

行为组件

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

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

所有行为成分如下:

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

UI组件

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

所有UI组件如下:

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

Reference article

答案 4 :(得分:6)

Android Jetpack 组件

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

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

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

架构组件

所有架构组件如下:

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

欲了解更多详情,请使用以下链接:- https://blog.mindorks.com/what-is-android-jetpack-and-why-should-we-use-it

答案 5 :(得分:2)

我们都引用官方网站,上面写着,

  

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

所以现在让我们将其分解为零碎,它只说了两件事

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

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

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

  1. 现在,Jetpack附带的所有这些库都在其旁边执行许多样板代码,因此您无需编写大量代码,而只需要担心逻辑。例如-还记得处理屏幕旋转吗? ( ViewModel 负责),通过分页处理无限滚动吗? (现在您有 Paging 库),处理后退按钮(有 Navigation 个库供您使用)(仅其中几个)

还有其他原因单独包装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。*现在将被保留用于与应用程序开发相关的东西。

    < / li>
  3. 除此之外,您还拥有:

    • 建筑组件
    • 基础组成部分
    • UI组件
    • 行为成分

因此,现在,Jetpack只是这些组件,androidx和其他工具的超集的名称。

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:1)

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、自定义选项卡等。 此外,该库还为 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 与模型的控制明确分离,开发人员可以借此避免与 Activity 生命周期相关的问题。< /p>

架构组件是:

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

    1.实体

    2.数据访问对象

    3.数据库

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

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

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

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

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

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

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

<块引用>

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

行为组件是:

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

UI 组件 - UI 组件提供针对 改善用户与 Android 应用程序的交互。

UI 组件是:

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

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

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

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

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

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

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

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

答案 8 :(得分:0)

Android Jetpack是一组库,可简化android开发人员的生活。也可以不用jetpack来完成Android开发,但是它使您的应用程序更具模块化,对应用程序生命周期的了解和可测试性更高。

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