迁移AndroidX
1. 前言
AndroidX replaces the original support library APIs with packages in the androidx namespace. Only the package and Maven artifact names changed; class, method, and field names did not change.,Google不再对android support库进行维护,android support中的API由命名空间AndroidX下的软件包进行替换,即相应的包名和Maven工件名发生改变。
2. 迁移AndroidX
2.1 迁移之前的准备
- 原有项目的
support库版本升级至28(Android 9),这也是support library的最后版本,SDK 28 和AndroidX 1.0 是等效的。This is because AndroidX artifacts with version 1.0.0 are binary equivalent to the Support Library 28.0.0 artifacts.,
compileSdkVersion 28
- 建议使用Android studio 3.2或更高版本,(当前最新版已经到了4.0)。
gradle-wrapper.properties中Gradle插件版本不低于4.6。
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
- 如果代码在版本控制器中,建议在单独的分支中迁移。
2.2 执行迁移
- 在gradle.properties文件中添加下列项。
# Android 插件会使用对应的 AndroidX 库而非支持库。
android.useAndroidX=true
# Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX,但并不完全自动。
android.enableJetifier=true
- 如果是AS 3.2或更高版本,则提供了一键迁移,选择菜单
Refactor-> Migrate to AndroidX,会提示备份当前工程,勾选Backup project as Zip file,可以自动帮你备份。

- 左下角提示,点击
Do Refactor

3 迁移结果
在一键迁移之后,gradle文件中implementation的所有support库被androidx替换,比如
implementation 'com.android.support:appcompat-v7:28.0.0'
变为
implementation 'androidx.appcompat:appcompat:1.0.0'
相应类名也会发生改变
import android.support.v7.app.AppCompatActivity;
变为
import androidx.appcompat.app.AppCompatActivity;
所以,可以先看看上面两项结果,如果没有替换成功,可手动替换,相应替换可查阅官方提供的CSV格式的依赖库映射文件和类映射文件。
rebuild project,如果编译通过,那么恭喜你了,我反正是失败了。
4 迁移出错
4.1 可手动纠正的错
- 有的文件中没能替换掉,需要按照上述两项映射手动替换。
- 检查gradle中通过
implementation引入的库,比如implementation androidx.recyclerview:recyclerview:1.0.0',则一键迁移后导入的类为import androidx.appcompat.widget.RecyclerView;,需要替换为import androidx.recyclerview.widget.RecyclerView;,猜测只是全局替换掉support字样。因为类似还有GridLayoutManager、FragmentTransaction;
`等。
4.2 第三方库冲突
support库和androidx是不能共存的,
- 情况1 :当迁移结束之后,理论上讲自己的项目使用的是
androidx,但是老项目中导入了许多第三方的库,这些旧版本的库使用的是support。 - 情况2:这种情况发生在未进行迁移的项目中,由于导入了最新版的第三方库,而该库使用了
androidx,也会报错。
解决方法:
- 情况1,更新第三方库到最新版本或使用
androidx的版本,如果这个库没有使用androidx的版本,那就要找其他的方案代替吧(不知道是否是正确的解决方案)。 - 情况2:使用旧版本的第三方库。
总之,就是多build,根据异常信息解决问题。
5 参考资料
AndroidX预览
官方迁移教程
谷歌开发者-是时候迁移至 AndroidX 了
本文若有出入,请指正!
我是小小范同学。
本文由博客一文多发平台 OpenWrite 发布!
迁移AndroidX的更多相关文章
- Android 支持库迁移到AndroidX
一.背景 Android系统版本在不断更新,从最初的Android 1.0到现在Google和各大手机厂商正在推的Android 10,平均下来每个年头都有一个大的版本更新.但用户正在用的手机上的An ...
- android -------- AndroidX的迁移
Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,将原来的android.*替换成androidx.*:只有包名和Maven工 ...
- 收藏的链接-Android
我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法 - 欧阳鹏 - CSDN博客 https://blog.csdn.n ...
- Jetpack 迁移到 androidX support MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- [Android Pro] AndroidX重构和映射
原文地址:https://developer.android.com/topic/libraries/support-library/refactor https://blog.csdn.net/ch ...
- [Android Pro] AndroidX了解一下
cp : https://blog.csdn.net/qq_17766199/article/details/81433706 1.说明 官方原文如下: We hope the division be ...
- Android:你好,androidX!再见,android.support
1.AndroidX简介 点击查看Android文档中对androidx的简介 按照官方文档说明 androidx 是对 android.support.xxx 包的整理后产物.由于之前的suppor ...
- Migrate to AndroidX 遇到的坑
Androidx 迁移方法: 首先把 gradle 版本改为3.2.0以上,以及 compileSdkVersion 为28以上 然后 Android Studio 菜单栏 Refactor -> ...
- Androidx初尝及其新旧包对照表
x的最低实验条件 AndroidStudio 3.2.0+ gradle:gradle-4.6以上 本次实验条件: AndroidStudio 3.3 (强制要求最低gradle版本为gradle-4 ...
随机推荐
- PHPstudy 修改数据库上传大小
要修改的地方已经标出来了 直接修改为你需要的值即可:
- PHP文件目录操作
目录操作 is_dir ( $path ) 判断当前路径是否为目录 ,返回布尔 opendir ( $path ) 打开路径目录,返回资源 readdir ( $handle ) 读取当前打开目录下一 ...
- oracle 多表连接查询 join
转 简介: 多表连接查询通过表之间的关联字段,一次查询多表数据. 下面将依次介绍 多表连接中的如下方法: 1.from a,b 2.inner join 3.left outer join 4.rig ...
- [Firefox附加组件]0003.弹出对话框
Firefox中使用面板(panel)模块来显示弹出对话框,面板的内容通过HTML编写.你可以在面板上运行content script,尽管在面板里的脚本无法直接访问插件代码,但是你可以在面板脚本和插 ...
- StringBuffer & StringBuilder
java.lang.StringBuffer: ①代表可变的字符序列,可以对字符串内容进行增删. ②很多方法与String相同,但StingBuffer是可 ...
- 是时候扔掉cmder, 换上Windows Terminal
作为一个Windows的长期用户,一直没有给款好用的终端,知道遇到了 cmder,它拯救一个习惯用Windows敲shell命令的人. 不用跟我安利macOS真香!公司上班一直用macOS,一方面确实 ...
- Rocket - util - Frequency
https://mp.weixin.qq.com/s/QoP9Gbm9hUQ4xsjJQ0pZ1Q 简单介绍Frequency的实现. 一个实例: 1. 基本介绍 ...
- jchdl - GSL实例:FullAdder
https://mp.weixin.qq.com/s/CtT08xZON0YxnheqDM2FAw 全加器是能够计算低位进位的二进制加法电路.与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑 ...
- (Java实现) 洛谷 P1028 数的计算
题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数nn): 先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自然数,但该自然数不能 ...
- Java实现 LeetCode 284 顶端迭代器
284. 顶端迭代器 给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext().设计并实现一个支持 peek() 操作的顶端迭代器 – 其本质就是把原本应由 next() 方法 ...