Android Jetpack架构组件简介

概述

自2008年9月22日谷歌发布Android 1.0版本到前不久Android 12版本到发布,Android已经陪伴咱们走过了12个年头。能够说,通过12年的打磨和沉淀,Android的技术体系已经很是的成熟了。好比说,一开始时框架不多,也没有什么规范,全部的代码都是要本身写,可是如今,咱们不多会关系这种基础代码,由于一些框架和工具的出现正在帮助开发者完成这方面的工做。javascript

不过,虽然咱们可使用这些框架和技术来达到快速迭代的目的,可是愈来愈杂的技术选型也让Android开发者无从选择,最终致使作出来的应用质量良莠不齐。长久以来,Android一直没有制定一个规范来姐姐这一问题,只要可以实现功能,代码怎么编写都是能够的。虽然Android官方没有推出开发标准,可是一些技术社区出于更高效的进行协同开发,逐渐引入了MVP和MVVM等应用开发架构,使用这些框架开发出来的应用,不管从项目质量仍是代码的可读性和可维护性来讲,都更加出色,因而这些框架和技术逐渐流行起来。java

这些状况被谷歌发现后,最终在Goole I/O 2018大会上推出了全新的Android Jetpack应用开发架构。或许称Android Jetpack为一个架构有点不许确,更多的地方将它称为Android应用开发的工具集,Jetpack是一套库、工具和指南的集合,旨在帮助开发者更轻松地编写优质应用。事实上,Android Jetpack所包含的内容是比较庞大的,主要由基础组件、架构组件、行为组件和UI组件构成,以下图所示。
在这里插入图片描述
而且, Android Jetpack中的不少组件并不都是新开发的,如Goole I/O 2017大会时就推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room等组件,而在Goole I/O 2018大会上谷歌使用AndroidX替代了Android Support Library,并在Android Architecture Component的基础上发布了Android Jetpack等架构组件。android

Android Jetpack有以下一些特色:数据库

1.加速开发
组件可单独使用,也能够协同工做,当使用kotlin语言特性时,能够提升效率,而且具备很是好的向下兼容性。后端

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

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

Jetpack分类

Android Jetpack组件主要分为四大类:app

  • 基础 - Foundation
  • 架构 - Architecture
  • 行为 - Behavior
  • 界面 - UI

Architecture(架构组件)

Architecture指的是架构组件,旨在帮助开发者设计稳健、可测试且易维护的应用。架构组件能够说是对应用开发帮助最大的组件,具体包含以下一些基础组件。框架

  • Data Binding(数据绑定):属于支持库可以使用声明式将布局中的界面组件绑定到应用中的数据源
  • Lifecycles:管理 Activity 和 Fragment 生命周期
  • LiveData:是一个可观察的数据持有者类。与常规observable不一样,LiveData是有生命周期感知的。
  • Navigation:处理应用内导航所需的一切
  • Paging:一次加载 or 按需加载 & 显示小块数据
  • Room:帮助开发者更友好、流畅的访问SQLite数据库。
  • ViewModel:以生命周期感知的方式存储和管理与UI相关的数据。
  • WorkManager:管理Android的后台的做业,即便应用程序退出或设备从新启动也能够运行可延迟的异步任务。

下面是Google官方推荐的Android应用架构示意图。
在这里插入图片描述
每一个组件仅依赖于其下一级的组件。例如,Activity 和 Fragment 仅依赖于视图模型ViewModwl。存储区是惟一依赖于其余多个类的类,在本例中存储区依赖于持久性数据模型和远程后端数据源。而且,这些架构组件既能够配合使用,也能够单独使用,能够根据须要合理选择。异步

Foundationy(基础组件)

Foundationy指的是基础组件,提供最基础的功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并提供包括多个多个平台开发的组件,具体包含以下。

  • Android KTX:优化了供Kotlin使用的Jetpack和Android平台API,帮助开发者以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发。
  • AppCompat:帮助较低版本的Android系统进行兼容。
  • Auto: 开发Android Auto应用的组件,提供了适用于全部车辆的标准化界面和用户交互。
  • 检测:从AndroidStudio中快速检测基于Kotlin或Java的代码。

-多Dex处理:为具备多个Dex文件应用提供支持。

  • 安全:安全的读写加密文件和共享偏好设置。
  • 测试:用于单元和运行时界面测试的Android 测试框架。
  • TV: 构建可以让用户在大屏幕上体验沉浸式内容的应用。
  • Wear OS:开发Wear应用的组件。

Behavior(行为组件)

行为组件能够帮助开发者的应用与标准Android服务(如通知、权限、分享)进行集成,行为组件包含。

  • CameraX(相机) :简化相机应用的开发工做,可向后兼容至 Android 5.0(API 级别 21)
  • DownloadManager(下载):可处理长时间运行的HTTP下载 & 超时重连
  • Media & playback(多媒体) :用于媒体播放,以及路由的向后兼容 API。
  • Notifications(通知):提供向后兼容的通知 API,支持 Wear 和 Auto。
  • Permissions(权限):用于检查和请求应用权限的兼容性 API。
  • Preferences(偏好设置):提供了可以改变应用的功能和行为能力。
  • Sharing(共享):提供适合应用操做栏的共享操做。
  • Slices(切片):建立可在应用外部显示应用数据的灵活界面元素。

UI(界面组件)

界面组件主要提供各类辅助绘制界面的View类 和各类辅助组件,具体包含。

  • Animation & Transitions(动画):提供各种内置动画以及自定义动画效果。
  • Emoji(表情):使用户在未更新系统版本的状况下也可使用表情符号。
  • Layout(布局):xml书写的界面布局或者使用Compose完成的界面。
  • Palette(调试板):从调色板中提取出有用的信息。

在项目中引入JetPack组件

在项目中引入JetPack组件须要在项目build.gradle中添加google() 库,默认状况下会添加google() 库的,以下所示。

allprojects {
        repositories {
            google()
            jcenter()
        }
    }

接下来,咱们就可使用具体的组件库了,如咱们想引入Room持久化库,那么只须要app的build.gradle文件中添加库引用便可。

implementation   "android.arch.persistence.room:runtime:1.1.1"
    annotationProcessor   "android.arch.persistence.room:compiler:1.1.1 "
    androidTestImplementation  "android.arch.persistence.room:testing:1.1.1"

AndroidX

AndroidX简介

AndroidX是谷歌在 2018 I/O 大会上推出的用于替换android.support.library的 Android扩展库,按照官方文档说明,android.support.library在Android 28版本以后就再也不更新,将来的版本更新都在AndroidX中进行。不只如此,AAC(Android Architecture Components架构缩写)中的组件也被 合并到AndroidX中,因此在使用JetPack组件时常常会看到AndroidX相关的包。

而且,为了方便开发者迁移到AndroidX版本,谷歌官方给出了很详细的迁移文档(如何迁移到Android)。对于一些新组件和老组件,能够参加下面的表。
在这里插入图片描述

迁移到AndroidX

若是你从未在Android项目中使用AndroidX,如今但愿将项目迁移到AndroidX,那么能够在菜单栏中依次选择【ReFactor】→【Migrate to AndroidX... 】便可将你的Android项目迁移到AndroidX,以下图所示。
在这里插入图片描述
而后带你【Migrate】按钮确认,迁移完成以后,打开项目的gradle.properties文件,能够看到以下脚本代码。

android.useAndroidX=true      //是否使用AndroidX
android.enableJetifier=true   //是否将第三方库迁移到AndroidX

而后再打开Android项目的app的build.gradle文件,发现一些第三方库也被AndroidX的库所替换。

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation 'com.google.android.material:material:1.3.0-alpha03'
...

若是是新建项目,那么默认会添加AndroidX支持。

相关文章
相关标签/搜索