自2008年9月22日谷歌发布Android 1.0版本到前不久Android 12版本到发布,Android已经陪伴我们走过了12个年头。可以说,经过12年的打磨和沉淀,Android的技术体系已经非常的成熟了。比如说,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,但是现在,我们很少会关系这种基础代码,因为一些框架和工具的出现正在帮助开发者完成这方面的工作。
不过,虽然我们可以使用这些框架和技术来达到快速迭代的目的,但是越来越杂的技术选型也让Android开发者无从选择,最终导致做出来的应用质量参差不齐。长久以来,Android一直没有制定一个规范来姐姐这一问题,只要能够实现功能,代码怎么编写都是可以的。虽然Android官方没有推出开发标准,但是一些技术社区出于更高效的进行协同开发,逐渐引入了MVP和MVVM等应用开发架构,使用这些框架开发出来的应用,无论从项目质量还是代码的可读性和可维护性来说,都更加出色,于是这些框架和技术逐渐流行起来。
这些情况被谷歌发现后,最终在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 Jetpack有如下一些特点:
1.加速开发
组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率,并且具有非常好的向下兼容性。
2.消除样板代码
Android Jetpack可以很方便的管理繁琐的Activity(如后台任务、导航和生命周期管理)。
3.构建高质量的强大应用
Android Jetpack组件围绕现代化设计实践构建而成,具有向后兼容性,可以有效减少崩溃和内存泄漏。
Android Jetpack组件主要分为四大类:
Architecture指的是架构组件,旨在帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,具体包含如下一些基础组件。
下面是Google官方推荐的Android应用架构示意图。
每个组件仅依赖于其下一级的组件。例如,Activity 和 Fragment 仅依赖于视图模型ViewModwl。存储区是唯一依赖于其他多个类的类,在本例中存储区依赖于持久性数据模型和远程后端数据源。并且,这些架构组件既可以配合使用,也可以单独使用,可以根据需要合理选择。
Foundationy指的是基础组件,提供最基础的功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并提供包括多个多个平台开发的组件,具体包含如下。
行为组件可以帮助开发者的应用与标准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支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。