JetPack 介绍

一、 Jetpack 的诞生

​ 近几年为了丰富Android日常开发的UI效果,陆陆续续涌现出一大批UI组件,在UI组件日益完善的同时,也开始出现了RecyclerView、ConstraintLayout、MotionLayout等一些可以辅助大家写出更加符合性能要求的界面效果。同时,系统的安全与稳定性、用户隐私也越来越被重视,所以每个版本都出现了一些大的适配工作,例如运行时权限,FileProvider适配,限制后台服务、广播,限制反射SDK 私有API,引导使用HTTPS,甚至去除SDCard访问权限等…

在这些基础能力完善后, Google终于开始对基础、架构、行为、UI 等下手了。

大家都知道后端一般的项目大多数都是MVC架构,而且大多数后端写出来的代码很自然就遵守了这个架构。

为什么呢? 后端的框架相对成熟,由框架引导架构的落地。比如Spring框架,他会引导你去做 ioc, aop,分层,Controller、Service、Dao一应俱全,你只要按照框架的指引,写出来的基本都符合MVC了。

但是在Android上,由于很多业务非常简单,简单到只需要发个请求、解析结果就完事了,这种情况下,很难让去划分业务层、控制层等等,并且Android也有自己的特殊的平台特性,比如组件生命周期、页面重建与恢复等等。

所以需要一系列的套件来引导大家去遵守某一架构,并针对平台特性做一些特殊支持,提供组件生命周期的感知套件,帮助大家更好的完成界面重建恢复等工作,以便于更好的管理大家的代码。

因此,Jetpack来了!

Jetpack是什么?

​ 2018年谷歌发布了一系列辅助Android开发者的实用工具,合称Jetpack。

​ Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。

Jetpack的出现以及Google标准化开发模式的确立,代表了Android原生开发的未来方向,意味着Android发展已经逐渐成熟。

5.png

Jetpack原意为 喷气背包,Android背上Jetpack后就直冲云霄,这很形象了~

二、 Jetpack有什么?

Android Jetpack分类有4种,分别是 Architecture(架构)、Foundation(基础)、Behavior(行为)、UI(界面)

1j.png

2.png

1. Architecture(架构组件)

Android Architecture Component(AAC)

Architecture指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用,架构组件可以说是对应用开发帮助最大的组件。

元素 介绍
LifeCycle 组件内部感知自己的生命周期
Navigation 管理Fragment
ViewModel 视图与数据之间的桥梁
LiveData 实时更新数据
Room 数据库
WorkManager 更加智能后台任务
DataBinding XML中绑定数据,更新UI
Paging 分页加载
  • DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。
  • Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。
  • LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的。
  • Navigation:处理应用内导航。
  • Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
  • Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问。
  • ViewModel: 以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持。
  • WorkManager: 管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。

官方推荐的Android应用架构如下图所示。

3.png

2. Foundation(基础组件)

基础组件提供横向功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并包括多个多个平台开发的组件。

元素 介绍
Android KTX 优化了供Kotlin使用的Jetpack和Android平台API。帮助开发者以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发。
AppCompat 帮助较低版本的Android系统进行兼容。
Auto 开发Android Auto应用的组件,提供了适用于所有车辆的标准化界面和用户交互。
检测 从AndroidStudio中快速检测基于Kotlin或Java的代码。
多Dex处理 为具有多个Dex文件应用提供支持。
安全 安全的读写加密文件和共享偏好设置。
测试 用于单元和运行时界面测试的Android 测试框架。
TV 构建可让用户在大屏幕上体验沉浸式内容的应用。
Wear OS 开发Wear应用的组件。
3. BeHavior(行为组件)

行为组件可帮助开发者的应用与标准Android服务(如通知、权限、分享)相集成。

元素 介绍
CameraX 帮助开发简化相机应用的开发工作。它提供一致且易于使用的界面,适用于大多数Android。 设备,并可向后兼容至Android 5.0(API 21)。
DownloadManager 处理长时间运行的HTTP下载的系统服务。
媒体和播放 用于媒体播放和路由(包括Google Cast)的向后兼容API。
通知 提供向后兼容的通知API,支持Wear和Auto。
权限 用于检查和请求应用权限的兼容性API。
设置 创建交互式设置,建议使用AndroidX Preference Library库将用户可配置设置集成到应用中。
分享操作 可以更轻松地实现友好的用户分享操作。
切片 切片是一种UI模板,创建可在应用外部显示应用数据的灵活界面元素。
4. UI(界面组件)
元素 介绍
Animation and Transition 该框架包含用于常见效果的内置动画,并允许开发者创建自定义动画和生命周期回调。
Emoji Compatibility 即便用户没有更新Android系统也可以获取最新的表情符号。
Fragment 组件化界面的基本单位。
布局 用XML中声明UI元素或者在代码中实例化UI元素。
调色板 从调色板中提取出有用的信息。

三、 Jetpack的优点

解决了 Android 架构问题

由于之前 Google 并没有推出关于 Android 应用程序架构设计的标准,因此,很多工程师只能自己创造各种解决方案,但这些方案都普遍存在两个问题:

  • 非 Google 官方解决方案

一般有经验的工程师,都会从自己做过的项目中,总结出一套自己的架构设计,并且将其应用到生产环境中,不过或多或少的都会存在一定的问题,因此需要有人一直维护和持续优化项目的架构。并且随着项目需求复杂度的增加,也面临重新设计架构的工作。

  • 无法辨别最佳的解决方案

由于每个工程师的设计思路都不相同,因此,也无法确认到底谁的架构是最佳方案,最终也导致了开发出来的应用参差不齐。

Google 也意识到了这些问题,因此推出了 Jetpack,让开发者能够使用标准的架构组件,而不用去纠结架构的方案设计,可以将更多的精力放在自己的业务代码上。

优点:

1.加速开发
组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率。

2.消除样板代码
Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理)。

3.构建高质量的强大应用
Android Jetpack组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。

4. 遵循最佳做法,Android Jetpack 组件采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄露。

5. 消除样板代码,Android Jetpack 可以管理各种繁琐的 Activity(如后台任务、导航和生命周期管理),以便您可以专注于打造出色的应用。

6. 减少不一致,这些库可在各种 Android 版本和设备中以一致的方式运作,助您降低复杂性。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享