JetPack现在都成了Android开发必备技能嘛?


JetPack现在都成了Android开发必备技能嘛?

文章插图
 
一、Android JetPack——google多么痛的领悟最近好几个小伙伴问我什么是Android JetPack,听说这个包好像有点牛,帅哥你会不?
我心想什么鬼!Android JetPack这货不是一个库,是一整套的库,是一种信仰一种态度好么 。从前,Android开发者基本都是被放养的 。生态基本全靠自建,代表有Square全家桶,Glide,Google自己也肯定是出力的,但是并没有明确Android开发的几个大方向,所以安卓的开发生态一直是百花齐放百家争鸣 。带来的问题就是经常出现包引用莫名报错 。
事情从2017年发生了转机,在Google IO 2017,官方终于正视了这个问题开始尝试管理这个混乱的Android开发环境,并推出了Architecture Component,主要有以下几项:
Room: 官方的ORM库(个人认为比GreenDao好用)ViewModel/LiveData:生命周期管理工具,自此Android才真正的应用上了MVVM(BTW,DataBinding也归到了JetPack里)
在2018年,AndroidX横空出世,并且从1开始,意图取代经常自己打自己脸的Support Lib 。
一张图来看看Google对JetPack有多看重
JetPack现在都成了Android开发必备技能嘛?

文章插图
 
那JetPack到底是啥呢?
Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality Apps easier. These components help you follow best practices, free you from writing boilerplate code, and simplify complex tasks, so you can focus on the code you care about.
Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用 。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上 。
二、JetPack里的组件
JetPack现在都成了Android开发必备技能嘛?

文章插图
 
上图就是JetPack中包含的组件列表,每个组件都是相对独立的,可以被单独使用和构建 。其中像被介绍的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之类的都发布了正式版,而CameraX, Compose之类的还处在Alpha版本,未正式发布,官方并不建议在生产环境中使用 。
然后说下,JetPack所有的组件都是基于AndroidX构建的,如果想在项目中使用JetPack需要先将项目中对Support Lib的依赖全部换成AndroidX 。
Android目前已经发展了11年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等 。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的 。谷歌随后推出了MVP和MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018大会上推出的Android Jetpack有望解决以上的问题 。
三、Android Jetpack简介Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用 。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上 。
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,AndroidX也是属于Android Jetpack 。
Jetpack主要特性有以下三点:
1.加速开发 组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率 。
2.消除样板代码 Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理) 。
3.构建高质量的强大应用 Android Jetpack组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏 。
四、Android Jetpack分类下图是Jetpack的分类 。
JetPack现在都成了Android开发必备技能嘛?

文章插图
 
谷歌仍旧不断的完善Android Jetpack,截至到2019年8月已经有很多新加的组件并没有显示在上图中,比如CameraX等 。Android Jetpack分类有4种,分别是Architecture、Foundationy、Behavior、UI,下面分别介绍下 。
1. Architecture(架构组件)


推荐阅读