游乐游手机版
首页/系统平台/文章详情

AndroidX迁移指南:现在开始升级最合适

时间:2026-08-21 15:48
一直以来,我们始终专注于三件事:提供最佳实践指南、减少样板代码以及简化开发流程。我们的目标,是帮助开发者把更多精力放在真正关键的业务逻辑上。Jetpack 正是为此而生,它包含的一系列库、工具和开发指南,能够帮助您更高效地构建高质量 Android 应用。那么,Jetpack 和 AndroidX

一直以来,我们始终专注于三件事:提供最佳实践指南、减少样板代码以及简化开发流程。我们的目标,是帮助开发者把更多精力放在真正关键的业务逻辑上。Jetpack 正是为此而生,它包含的一系列库、工具和开发指南,能够帮助您更高效地构建高质量 Android 应用。

那么,Jetpack 和 AndroidX 到底是什么关系呢?Jetpack 中的所有库都统一使用 AndroidX 作为包名,同时我们也将 AndroidX 作为一个用于开发、测试与发布 Jetpack 库的开源项目体系。

在 2018 年的 I/O 大会上,我们正式公布了将 Support Library 重构到 AndroidX 命名空间的计划。在 Support Library 28 中,这项重构已经完成,并发布了 AndroidX 1.0。也就是说,如果您希望使用 Jetpack 带来的新能力与开发便利,就需要将旧版 Support Library 迁移到 AndroidX。

为什么有必要迁移至 AndroidX

您可能会疑惑:既然 AndroidX 本质上只是 Support Library 28 的重构版本,为什么还要专门迁移?关于这个问题,主要有以下几个原因:

  1. Support Library 已经完成了它的历史任务,28 将是它的最后一个发布版本。后续我们不会继续在 Support Library 中修复 bug,也不会再为其增加新功能;

  2. 更优秀的依赖与包管理能力:独立版本、独立命名以及更高频率的更新机制,这些都是 AndroidX 天生具备的优势;

  3. 目前,许多常用的 Android 开发工具库都已经迁移至 AndroidX,例如 Google Play 服务、Firebase、Butterknife、Mockito 2、SQL Delight,后文我们也会提到这些依赖应如何迁移;

  4. 我们正在持续推广 AndroidX 命名空间,未来所有新的组件库,例如 Jetpack Compose 和 CameraX,也都会成为 AndroidX 生态的一部分。

如何迁移至 AndroidX

前期准备

在正式开始 AndroidX 迁移之前,为了让整个升级过程更加顺利、平稳,我们建议您先做好以下准备:

  • 首先,备份整个工程。虽然大多数开发者都在使用代码版本控制系统,但由于迁移 AndroidX 会涉及大量文件变更,仍然建议您额外备份完整项目;

  • 其次,尽量减少与迁移同时进行的新功能开发;

  • 最后,强烈建议您在单独的分支中完成 AndroidX 迁移工作。

开始迁移

在整个 AndroidX 迁移过程中,我们的重点是持续解决编译错误,直到应用能够成功构建并通过全部测试。

下面是迁移流程的整体思路。虽然步骤看起来不少,但本文会对每个关键环节逐一说明:

第一步: 将 Support Library 升级至 28

首先,我们建议您将当前项目中使用的 Support Library 依赖统一升级到 28 版本。如果您是从更早期的 Support Library 版本直接迁移,可能不仅会遇到 API 不兼容的问题,还需要同时处理命名空间变更;而 Support Library 28 与 AndroidX 在 API 层面基本一致,差异主要集中在命名空间。因此,更推荐您先把 Support Library 升级到 28,解决所有 API 变动并确保工程能够正常编译,然后再进入下一步 AndroidX 迁移,这样整体修改成本会更低。

第二步: 开启 Jetifier

接下来需要完成的操作是启用 Jetifier。Jetifier 的作用,是帮助您把第三方依赖库中仍基于旧 Support Library 的部分转换为可兼容 AndroidX 的形式。顾名思义,Jetifier 会对这些第三方依赖进行处理,使它们能够与已迁移到 AndroidX 的工程正常协作。不过需要注意的是,Jetifier 不会修改您的项目源码,也不会处理自动生成的代码,因此一般不必担心它会对工程造成额外副作用。

开启 Jetifier 非常简单,您只需要在 gradle.properties 文件中加入 "android.useAndroidX = true" 和 "android.enableJetifier = true" 即可。其中,"useAndroidX" 用于启用 AndroidX 库的自动导入功能,这样在自动补全或添加依赖时,系统会优先导入 AndroidX 对应库。

第三步: 检查第三方库版本的兼容性

启用 Jetifier 之后,下一步就是检查并升级第三方依赖库,确保它们使用的是兼容 AndroidX 的版本。实际上,在您真正开始迁移之前,最好先把所有依赖更新到当前可用的较新版本。

为什么要这样做?因为我们自己就在这个问题上吃过亏。我们有一个示例应用 Plaid,它依赖图片加载库 Glide。原本我们打算用 Plaid 来演示如何将 Android 应用迁移到 AndroidX,但在没有提前检查 Glide 版本兼容性的情况下直接开始迁移,结果遇到了大量编译错误。后来排查才发现,问题出在当时使用的 Glide 版本本身并不兼容 AndroidX。

而当我们将 Glide 以及其他依赖库全部升级到更新版本之后,再重新开始迁移,同样的问题就不再出现了。因此,在着手 AndroidX 升级之前,建议您先全面检查并更新项目中的第三方依赖,因为新版本库往往已经完成了对 AndroidX 的适配。还需要特别注意,Jetifier 并不能帮您处理那些包含自动生成代码的依赖库,所以这类库是否兼容 AndroidX,仍然需要您亲自确认。

如果跳过前面这两步,您很可能会遇到以下问题:

  • 如果当前使用的第三方库还不兼容 AndroidX,您会发现它仍然在尝试拉取旧版 Support Library;
  • 如果项目处于部分迁移状态,还可能出现类型重复的报错,这是因为工程同时从 Support Library 和 AndroidX 中拉取了相同代码。

第四步: 将 Support 库依赖转换为 AndroidX

开始这一步之前,您应当已经完成了前面的三个阶段:将 Support Library 升级到 28、启用 Jetifier,以及检查和升级第三方依赖库。确认这些前置条件都已处理妥当后,就可以正式开始把 Support 库迁移到 AndroidX 了。这里有以下三种常见方法可供参考:

  1. 使用 Android studio 自动迁移工具

我们在 Android 3.2 稳定版中加入了 "Migrate to AndroidX" 选项,方便开发者快速完成迁移。您可以在 "Refactor" 菜单中找到 "Migrate to AndroidX" 这一功能:

这个按钮的作用,就是将源码中的相关依赖和引用迁移到 AndroidX。在理想情况下,它能够帮助您完成大部分 AndroidX 自动迁移工作。

  1. 使用自动迁移脚本

我们也意识到,并不是所有团队都使用 Android Studio,同时有些 Android 项目的结构过于复杂,导致自动迁移工具无法顺利生效。

因此,您还可以选择另外两种方式,其中一种就是使用 bash 脚本,配合 grep 和 sed 命令完成批量替换。在介绍如何通过脚本迁移 AndroidX 之前,我们也特别感谢 Dan Lew 提供了这一实用工具。

您可以通过短链接: goo.gle/androidx-migration-script 访问脚本源码所在的 GitHub 页面,在那里也能看到更多来自社区的补充与贡献。

这个脚本的原理并不复杂。您需要手动配置类型映射表 "androidx-class-mapping.csv" 以及项目路径,而脚本核心逻辑实际上就是通过 grep 搜索,再结合 sed 命令批量替换工程中的导入包名:

不过,由于脚本处理方式相对直接,某些场景下可能会引发误替换或其他问题。所以如果您打算通过脚本执行 AndroidX 迁移,一定要提前评估风险并做好校验。

  1. 人工迁移

另一种方式,就是手动完成迁移。在 迁移到 AndroidX 中,您可以查看前文提到的 Support Library 与 AndroidX 的类型映射表。如下图所示,有了这份映射关系表之后,您就能够结合项目实际情况逐项替换:

完成这一步之后,只要重新编译项目,并修复迁移过程中受影响的测试,您就可以得到一个完全基于 AndroidX 的工程。可喜可贺!

可能遇到的问题

当然,实际迁移过程往往不会总是一帆风顺。下面整理了一些 AndroidX 迁移中常见的问题,希望能为您提供帮助。

常见的需要手动处理的情况

以下图为例,我们可以看到这里依赖的仍然是 Support Library,并且 drawerLayout 和 recyclerview 的版本号是通过一组变量统一管理的:

遇到这种情况时,自动迁移工具不会保留您原先的变量配置,而是直接将这些依赖替换成明确写死的 AndroidX 版本。如果您仍希望继续使用变量来统一管理依赖版本,就需要手动把这些 AndroidX 依赖重新改回变量引用形式。

此外,自动迁移工具也不会修改您的混淆配置文件和构建脚本。如果这些文件中同样包含旧包名或相关引用,您也需要手动完成相应调整。

冲突处理

前面我们已经提到,最好在新的分支中处理 AndroidX 迁移,这里再补充一些实践建议。

由于迁移会涉及大量文件修改,因此我们建议尽量放缓,甚至临时停止当前并行进行的开发工作。虽然让整个团队暂停开发听起来有些夸张,但这种做法确实能够显著减少后续代码合并冲突。

如果无法完全停止开发,那么退一步说,在条件允许的情况下,最好安排部分成员在独立分支中集中完成迁移工作。同时,也要提前提醒团队其他成员,后续很可能会出现分支合并冲突。

在处理依赖迁移时,请把注意力集中在修复错误上,以项目能够成功编译并通过全部测试为首要目标。不要一边迁移 AndroidX,一边顺手重构代码或添加新功能。

检查自动迁移工具导入的库版本

当您运行完自动迁移工具之后,可能会发现新的依赖中既包含稳定版,也包含 Alpha 版。这通常取决于当时可获取的最新发布版本。您需要根据自己项目的稳定性要求和实际需求,手动调整这些 AndroidX 依赖的版本号。

文档资源

最后,我们整理了一些与 AndroidX 迁移相关的重要文档,方便您后续回顾与查阅。

AndroidX 概览 包括:AndroidX 总览、迁移指南,以及 Support Library 到 AndroidX 库稳定版和 Alpha 版的映射关系表。如果您计划使用脚本完成迁移,这里也提供了映射关系表对应的 CSV 文件。

我们还有一篇关于 Kotlin & Jetpack 实践技巧的文章: 把 "格子衫" 改造得更时尚,详细介绍了示例工程 Plaid 迁移到 AndroidX 的全过程。在这篇文章中,我们说明了迁移步骤、遇到的问题以及对应的解决思路。

此外,我们还提供了 问题追踪页,您可以在该页面查看当前正在处理的问题,也可以通过左上角的按钮提交新的问题反馈给我们。

祝大家都能顺利、高效地完成 AndroidX 迁移!

您也可以通过视频回顾 2019 Android 开发者峰会演讲 —— 是时候迁移至 AndroidX 了!

来源:https://apiv1.oschina.net/oschinapi/blog/detail?id=4751651
上一篇Curve技术解析:MDS元数据管理机制与架构优化 下一篇SpringBoot使用Screw自动生成数据库表结构文档教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。