什么是Android X
AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。
AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。此外,AndroidX 还包括以下功能:
AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧编译工件到新编译工件的完整映射,请参阅软件包重构页面。
与支持库不同,AndroidX 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的 AndroidX 库。
所有新支持库的开发工作都将在 AndroidX 库中进行。这包括维护原始支持库工件和引入新的 Jetpack 组件。
怎么使用 AndroidX
AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。
注意:我们建议迁移时在单独的分支中工作。此外,还应设法避免在执行迁移时重构代码。
前提条件
迁移之前,请先将您的应用更新到最新版本。我们建议您更新项目以使用支持库的最终版本:版本 28.0.0。这是因为,1.0.0 版本的 AndroidX 工件是与支持库 28.0.0 工件等效的二进制文件。
使用 Android Studio 迁移现有项目
使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。
重构命令使用两个标记。默认情况下,这两个标记在 gradle.properties 文件中都设为 true:
android.useAndroidX=true
Android 插件会使用对应的 AndroidX 库(而非支持库)。
android.enableJetifier=true
Android 插件会通过重写其二进制文件来自动迁移现有的第三方库以使用 AndroidX。
注意:内置的 Android Studio 迁移功能可能并不是一切都能处理。根据您的编译配置,您可能需要手动更新编译脚本和 Proguard 映射。例如,如果您在一个单独的编译文件中维护依赖项配置,请使用下面提到的映射文件来检查依赖项并将其更新为对应的 AndroidX 软件包。
常见问题:
1. 资源找不到,包路径有问题。
eg: android.support.v4.media.app.NotificationCompat.MediaStyle() 在androidX下就变成了androidx.media.app.NotificationCompat.MediaStyle()
2. 运行时会报布局文件错误, 往往是包路径变化了,此时就可以去官方API查看对应的控件具体路径了。比如说 TabLayout 控件
结语: 好的东西,晚切换不如早切换,迟早要切换不如提前面对。