AndroidX与原始 Android 支持库
为什么要用AndroidX替代支持库
支持库引入的原因,是因为随着Android系统版本更新,肯定会带来一些新的系统变化,同时也为开发者带来了新的功能接口或Api能力。为了既要支持老的系统版本,又要具备新的Api功能,Android官方提供了支持库(android.support.*)。支持库的对应版本中,包含了可以支持到的具体的最低版本的,同时具有新的功能提供的具体实现及接口。于是,通过引入支持库,既不影响最低支持的版本,又具有了新的Android系统功能。
支持库为了利用Android系统自身的一些可能的新能力,每个版本的如v4的支持库内部,又针对不同的编译版本,划分出了多个支持库细分版本。后来,开发者引入时,需要引入与当前项目编译版本相对应的,且需要满足当前项目最低支持版本的具体支持库构建版本。最终导致的一个问题是,繁杂的支持库变更,不仅开发者不方便使用,官方维护也不容易。
为了解决支持库的命名的混乱,Google推出了androidx。
Androidx的特性
androidx 命名空间中的工件包含 Android Jetpack 库。与支持库一样,androidx 命名空间中的库与 Android 平台分开提供,并向后兼容各个 Android 版本。
AndroidX 对原始 Android 支持库进行了重大改进,后者现在已不再维护。androidx 软件包完全取代了支持库,不仅提供同等的功能,而且提供了新的库。
此外,AndroidX 还包括以下功能:
AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧构建工件到新构建工件的完整映射,请参阅软件包重构页面。
与支持库不同,androidx 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的各个 AndroidX 库。
如何在项目中使用androidX
要想使用androidx或者虽说需要把项目从支持库迁移到androidx,需要了解从支持库到对应的 AndroidX 工件和类的正确映射(参考官网文档:https://developer.android.google.cn/jetpack/androidx/migrate)
下面是一些常见的映射:
支持库工件映射:
支持库类映射:
下面通过一个简单例子来说明如何使用androidx:
首先 需要在 gradle.properties 文件中将以下两个 Android Gradle 插件标记设置为 true。(现在android studio的版本都是默认支持这种方式了)
android.useAndroidX: 该标记设置为 true 时,Android 插件会使用对应的 AndroidX 库,而非支持库。
android.enableJetifier: 该标记设置为 true 时,Android 插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用 AndroidX 依赖项。
然后 在build.gradle引入相应的依赖(我这里以RecyclerView为例)
旧构建工件:
implementation 'com.android.support:recyclerview-v7:27.1.1'
使用androidx:
最后 在布局文件中使用
支持库:
使用androidx:
推荐阅读
-
Android实现与Apache Tomcat服务器数据交互(MySql数据库)
-
android如何设置小区广播默认信道(50与60并支持双卡)
-
Android Studio3.6.3 当前最新版本数据库查找与导出方法(图文详解)
-
Android Studio 实现将support库改成Androidx
-
android 绑定sqlite数据库与程序一起发布
-
DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建
-
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
-
SQLite----Android Studio3.6.3 当前最新版本数据库查找与导出方法
-
Laravel实现数据库迁移与支持中文的填充
-
Android 数据库操作之:SQLiteOpenHelper 与 SQLiteDatabase(整理)