自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组件围绕现代化设计实践构建而成,具备向后兼容性,能够有效减小崩溃和内存泄漏。架构
Android Jetpack组件主要分为四大类:app
Architecture指的是架构组件,旨在帮助开发者设计稳健、可测试且易维护的应用。架构组件能够说是对应用开发帮助最大的组件,具体包含以下一些基础组件。框架
下面是Google官方推荐的Android应用架构示意图。
每一个组件仅依赖于其下一级的组件。例如,Activity 和 Fragment 仅依赖于视图模型ViewModwl。存储区是惟一依赖于其余多个类的类,在本例中存储区依赖于持久性数据模型和远程后端数据源。而且,这些架构组件既能够配合使用,也能够单独使用,能够根据须要合理选择。异步
Foundationy指的是基础组件,提供最基础的功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并提供包括多个多个平台开发的组件,具体包含以下。
-多Dex处理:为具备多个Dex文件应用提供支持。
行为组件能够帮助开发者的应用与标准Android服务(如通知、权限、分享)进行集成,行为组件包含。
界面组件主要提供各类辅助绘制界面的View类 和各类辅助组件,具体包含。
在项目中引入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是谷歌在 2018 I/O 大会上推出的用于替换android.support.library的 Android扩展库,按照官方文档说明,android.support.library在Android 28版本以后就再也不更新,将来的版本更新都在AndroidX中进行。不只如此,AAC(Android Architecture Components架构缩写)中的组件也被 合并到AndroidX中,因此在使用JetPack组件时常常会看到AndroidX相关的包。
而且,为了方便开发者迁移到AndroidX版本,谷歌官方给出了很详细的迁移文档(如何迁移到Android)。对于一些新组件和老组件,能够参加下面的表。
若是你从未在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支持。