赞
踩
jetpack [ˈdʒetpæk] 喷气发动机组件
由于之前Google
并没有推出关于Android
应用程序架构设计的标准,所以只要能够实现功能,代码怎么编写都可以。
为了追求更高的代码质量,就有第三方的社区和开发者将一些更加高级的项目架构引入到了Android
平台上,如MVP
、MVVM
等。使用这些架构开发出来的应用程序,在代码质量、可读性、易维护性等方面都有着更加出色的表现,于是这些架构渐渐成为了主流。
但是,这些方案都普遍存在以下两个问题:
Google
官方解决方案Google
意识到了这个情况后,在2017
年,推出了一个官方的架构组件库—— Architecture Components
,旨在帮助开发者编写出更加符合高质量代码规范、更具有架构设计的应用程序。
architecture [ˈɑːrkɪtektʃər] 建筑设计 components [kəmˈpoʊnənts] 部件;组件;成分;分力
2018
年,Google
又推出了一个全新的开发组件工具集Jetpack
,并将 Architecture Components
作为Jetpack
的一部分纳入其中。当然,Jetpack
并没有就此定版,2019
年又有许多新的组件被加入Jetpack
当中,未来的Jetpack
还会不断地继续扩充。
Jetpack
是一个开发组件工具集,它的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程。Jetpack
中的组件有一个特点,它们大部分不依赖于任何Android
系统版本,这意味着这些组件通常是定义在AndroidX
库当中的,并且拥有非常好的向下兼容性。
Jetpack
的优势:
Android
架构问题。让开发者能够使用标准的架构组件,而不用去纠结架构的方案设计,可以将更多的精力放在自己的业务代码上;Jetpack
拥有基于生命周期感知的能力,可以减少NPE(NullPointerException, 空指针异常)
崩溃、内存泄漏。为我们开发出健壮且流畅的程序提供强力保障;Jetpack
可以减少样板代码,有助于提升Android
开发的效率。这些组件可以单独使用,也可以组合使用,并且在不同Android
版本中运行一致;目前Android
官方最为推荐的项目架构就是MVVM
,因而Jetpack
中的许多架构组件是专门为MVVM
架构量身打造的。
Jetpack
与AndroidX
Jetpack
是各种组件库的统称,AndroidX
是这些组件的统一包名。
AndroidX
对原始Android Support Library
进行了重大改进,后者现在已不再维护。androidx
软件包完全取代了support
包,不仅提供同等的功能,而且提供了新的库。Jetpack
组件中也是完全使用androidx
开头的包名。
与Support Library
一样,androidx
命名空间中的库与Android
平台分开提供,并向后兼容各个Android
版本。
androidX
中的所有软件包都使用一致的命名空间,以字符串androidx
开头。Support Library
软件包已映射到对应的androidx.*
软件包。
与Support Library
不同,androidx
软件包会单独维护和更新。从版本1.0.0
开始,androidx
软件包使用严格的语义版本控制。可以单独更新项目中的各个AndroidX
库。
版本28.0.0
是Support Library
的最后一个版本。以后将不再发布android.support
库版本。所有新功能都将在androidx
命名空间中开发。
Jetpack
的“全家福”Jetpack
是一个丰富的组件库,它的组件库按类别分为4
类,分别是架构(Architecture
)、界面(UI
)、行为(behavior
)和基础(foundation
)。 像通知、权限、Fragment
都属于Jetpack
。由此可见,Jetpack
并不全是些新东西,只要是能够帮助开发者更好更方便地构建应用程序的组件,Google
都将其纳入了Jetpack
。
foundation [faʊnˈdeɪʃn] 地基,基础
每个组件都可以单独使用,也可以配合在一起使用。每个组件都给用户提供了一个标准,能够帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android
版本和设备中一致运行的代码,让开发者能够集中精力编写重要的业务代码。
Architecture
(架构组件)可设计稳健、可测试且易维护的应用Data Binding
:是一种支持库,借助该库,可以以声明方式将可观察数据绑定到界面元素;Lifecycles
:管理Activity
和Fragment
的生命周期, 能够帮助开发者轻松的应对Activity/Fragment
的生命周期变化问题,帮助开发者生成更易于维护的轻量级代码;LiveData
:在底层数据库更改时通知视图,是可观察的数据持有者类。与常规的可观察对象不同,LiveData
具有生命周期感知功能(例如Activity
,Fragment
或Service
的生命周期);Navigation
:处理应用内导航所需的一切;Paging
:逐步从数据源按需加载信息,帮助开发者一次加载和显示小块数据。 按需加载部分数据可减少网络带宽和系统资源的使用;Room
:流畅地访问SQLite
数据库。 在SQLite
上提供了一个抽象层,以在利用SQLite
的全部功能的同时允许更健壮的数据库访问。ViewModle
:以注重生命周期的方式管理界面相关的数据。ViewModel
类允许数据幸免于配置更改(例如屏幕旋转)。通常和DataBinding
配合使用,为开发者实现MVVM
架构提供了强有力的支持;WorkManager
:管理Android
的后台作业,即使应用程序退出或设备重新启动,也可以轻松地调度预期将要运行的可延迟异步任务;Foundation
(基础组件)可提供横向功能,例如向后兼容性、测试和Kotlin
语言支持。Android KTX
: 编写更简洁、惯用的Kotlin
代码,是一组Kotlin
扩展程序。 优化了供Kotlin
使用的Jetpack
和Android
平台API
。旨在让开发者利用Kotlin
语言功能(例如扩展函数/属性、lambda
、命名参数和参数默认值),以更简洁、更愉悦、更惯用的方式使用Kotlin
进行Android
开发。Android KTX
不会向现有的Android API
添加任何新功能;AppCompat
:帮助较低版本的Android
系统进行兼容;Auto
:有助于开发Android Auto
应用的组件。 是Google
推出的专为汽车所设计之Android
功能,旨在取代汽车制造商之原生车载系统来执行Android
应用与服务并访问与存取Android
手机内容;Benchmark
:从Android Studio
中快速检测基于Kotlin
或Java
的代码;Multidex
:为具有多个DEX
文件的应用提供支持;Security
:按照安全最佳做法读写加密文件和共享偏好设置;Test
:用于单元和运行时界面测试的Android
测试框架;TV
:有助于开发Android TV
应用的组件;Wear OS by Google
:有助于开发Wear
应用的组件;Behavior
(行为组件)可帮助您的应用与标准Android
服务(如通知、权限、分享和Google
助理)相集成CameraX
:简化相机应用的开发工作。它提供一致且易于使用的API
界面,适用于大多数Android
设备,并可向后兼容至Android 5.0
(API
级别 21
);DownloadManager
:是一项系统服务,可处理长时间运行的HTTP
下载。客户端可以请求将URI
下载到特定的目标文件。下载管理器将在后台进行下载,处理HTTP
交互,并在出现故障或在连接更改和系统重新启动后重试下载;Media & playback
:用于媒体播放和路由(包括Google Cast
)的向后兼容API
;Notifications
:提供向后兼容的通知API
,支持Wear
和Auto
;Permissions
:用于检查和请求应用权限的兼容性API
;Preferences
:创建交互式设置屏幕,建议使用AndroidX Preference Library
将用户可配置设置集成至应用中;Sharing
:提供适合应用操作栏的共享操作;Slices
:是UI
模板,可以通过启用全屏应用程序之外的互动来帮助用户更快地执行任务,即可以创建在应用外部显示应用数据的灵活界面。UI
(界面组件)可提供微件和辅助程序,让您的应用不仅简单易用,还能带来愉悦体验。了解有助于简化界面开发的Jetpack Compose
Animation & transitions
:使开发者可以轻松地为两个视图层次结构之间的变化设置动画。 该框架通过随时间更改其某些属性值在运行时为视图设置动画。该框架包括用于常见效果的内置动画,并允许开发者创建自定义动画和过渡生命周期回调;Emoji
:使Android
设备保持最新的最新emoji
表情,开发者的应用程序用户无需等待Android OS
更新即可获取最新的表情符号;Fragment
:Activity
的模块化组成部分;Layout
:定义应用中的界面结构。可以在xml
中声明界面元素,也可以在运行时实例化布局元素;Palette
:是一个支持库,可从图像中提取突出的颜色,以帮助开发者创建视觉上引人入胜的应用程序。开发者可以使用调色板库设计布局主题,并将自定义颜色应用于应用程序中的视觉元素。https://blog.csdn.net/sinat_35109311/article/details/108670581
https://zhuanlan.zhihu.com/p/334350927
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。