迁移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 ...
随机推荐
- 【C#图解教程学习笔记】第13章 委托
13.1 什么是委托 委托是持有一个或多个方法的对象,可将一个方法传递到另一个方法. 委托是用户自定义的引用类型. 13.2 委托概述 类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列 ...
- npm执行清理缓存失败npm cache clean
C:\Users\you name>npm cache cleannpm ERR! As of npm@5, the npm cache self-heals from corruption i ...
- Spring bean工厂配置头文件
命名 beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- [CSS布局基础]居中布局的实现方式总结
[原创]码路工人 Coder-Power 大家好,这里是码路工人有力量,我是码路工人,你们是力量. github-pages 博客园cnblogs 做Web开发少不了做页面布局.码路工人给大家总结一下 ...
- CF652E Pursuit For Aritifacts
题目传送门 这是一道很好的练习强联通的题目. 首先,从题中可以看到,题目的要求就是要我们求出从起点到终点是否可以经过flag = 1 的边. 由于是无向图,且要求很多,直接暴力dfs会很凌乱. 那么, ...
- [Node.js]001.安装与环境配置
安装与环境配置 第一步:下载安装文件 第二步:安装nodejs 第三步:npm安装 第四步:安装相关环境 第五步:安装CoffeeScript 第六步:CoffeeScript测试实例 第一步:下载安 ...
- while与do-while循环的使用
/* 1.格式: ①初始化条件 while(②循环条件){ ④循环体 ③迭代条件 } 2.for循环与while可以相互转换的 . */ public class TestWhile { //100以 ...
- matlab单目相机标定——标定步骤以及参数含义
参考博客园的一篇文章: https://www.cnblogs.com/flyinggod/p/8470407.html#commentform
- HotRing: A Hotspot-Aware In-Memory Key-Value Store(FAST ’20)
本文主要解决的是基于内存的K-V存储引擎在实际应用中出现的热点问题,设计了一个热点可感知的KV存储引擎,极大的提升了KV存储引擎对于热点数据访问的承载能力. Introduction 热点问题,可 ...
- 小谢第8问:ui框架的css样式如何更改
目前有三种方法, 1.使用scss,增加样式覆盖,但是此种方法要求css的className需要与框架内的元素相一致,因此修改时候需要特别注意,一个父级的不同就可能修改失败 2.deep穿透,这种方法 ...