AndroidX和Android支持库的区别
Android中的支持库包是一组代码库,其主要目的是为代码和Android API框架提供向后的兼容性。在现实世界中,很有可能在最新的Android版本上开发的应用程序被用于旧版本的Android操作系统。因此,在开发安卓应用程序时,在项目文件中包括支持库是最好的做法。此外,对于那些只通过库API提供的功能,也需要这些库。
安卓支持库(com.android.support)
这些库包是由谷歌提供的,为安卓应用程序提供向后的兼容性。这些包的名字以库所支持的最小版本的Android API结尾。例如,包名support-v4和support-v7分别表示最小支持的Android API版本是4和7。然而,随着2017年7月支持库26.0.0版本的发布,库功能和模块的不断进步,导致最小支持的Android API级别版本变为14级(Android 4.0)。
AndroidX包库(androidx.*)
随着2018年Android Jetpack的发布而引入,AndroidX是一种全新的支持库组织方式。旧的支持库对于开发者来说有些混乱,因为光看名字不能说某一个库中包含了哪些类。为了解决这个问题,谷歌在发布安卓9.0(API级别28)时推出了AndroidX(代表Android E X tension)库。任何以androidx.开头的库名都会自动成为Jetpack的一部分。它包括现有的Android支持库和最新的Jetpack组件。此外,开发者不需要为库的版本而烦恼,因为Jetpack知道要使用什么代码。
AndroidX和Android支持库的区别
安卓支持库 | AndroidX包库 |
---|---|
编写依赖关系的语法: com.android.support:recyclerview-v7 |
编写依赖关系的语法: androidx.recyclerview:recyclerview |
在项目中使用支持库时,必须为所有支持库保持相同的版本。 | 开发者可以自由地对不同的android组件使用不同版本的依赖。 |
为了在应用程序中使用安卓组件,需要添加的依赖性包括其他各种没有用的东西。 | 开发者只允许添加那些他们将在应用程序中使用的依赖性。 |
支持库的包被捆绑在安卓操作系统中。例如: android.content.Intent |
未捆绑的库被移到 androidx.* 命名空间,并与应用程序的APK打包。例如: androidx.fragment.app.Fragment |
包的名称包含最小支持的API级别。 | 该包对API级别没有依赖性。 |
所有的依赖都需要在使用前更新,因为所有的支持库都需要有完全相同的版本规格。 | AndroidX库可以单独更新。因此,开发者可以只更新项目中需要的那些库。 |
谷歌已经停止了对 com.android.support 库的支持。 |
AndroidX包库是谷歌推荐在项目中使用的库包。 |