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 执行迁移

  1. 在gradle.properties文件中添加下列项。
# Android 插件会使用对应的 AndroidX 库而非支持库。
android.useAndroidX=true
# Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX,但并不完全自动。
android.enableJetifier=true
  1. 如果是AS 3.2或更高版本,则提供了一键迁移,选择菜单Refactor-> Migrate to AndroidX,会提示备份当前工程,勾选Backup project as Zip file,可以自动帮你备份。

  2. 左下角提示,点击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 可手动纠正的错

  1. 有的文件中没能替换掉,需要按照上述两项映射手动替换。
  2. 检查gradle中通过implementation引入的库,比如implementation androidx.recyclerview:recyclerview:1.0.0',则一键迁移后导入的类为import androidx.appcompat.widget.RecyclerView;,需要替换为import androidx.recyclerview.widget.RecyclerView;,猜测只是全局替换掉support字样。因为类似还有GridLayoutManagerFragmentTransaction;

    `等。

4.2 第三方库冲突

support库和androidx是不能共存的,

  • 情况1 :当迁移结束之后,理论上讲自己的项目使用的是androidx,但是老项目中导入了许多第三方的库,这些旧版本的库使用的是support
  • 情况2:这种情况发生在未进行迁移的项目中,由于导入了最新版的第三方库,而该库使用了androidx,也会报错。

解决方法:

  • 情况1,更新第三方库到最新版本或使用androidx的版本,如果这个库没有使用androidx的版本,那就要找其他的方案代替吧(不知道是否是正确的解决方案)。
  • 情况2:使用旧版本的第三方库。

总之,就是多build,根据异常信息解决问题。

5 参考资料

AndroidX预览

官方迁移教程

谷歌开发者-是时候迁移至 AndroidX 了


本文若有出入,请指正!

我是小小范同学。


本文由博客一文多发平台 OpenWrite 发布!

迁移AndroidX的更多相关文章

  1. Android 支持库迁移到AndroidX

    一.背景 Android系统版本在不断更新,从最初的Android 1.0到现在Google和各大手机厂商正在推的Android 10,平均下来每个年头都有一个大的版本更新.但用户正在用的手机上的An ...

  2. android -------- AndroidX的迁移

    Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,将原来的android.*替换成androidx.*:只有包名和Maven工 ...

  3. 收藏的链接-Android

    我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法 - 欧阳鹏 - CSDN博客 https://blog.csdn.n ...

  4. Jetpack 迁移到 androidX support MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. [Android Pro] AndroidX重构和映射

    原文地址:https://developer.android.com/topic/libraries/support-library/refactor https://blog.csdn.net/ch ...

  6. [Android Pro] AndroidX了解一下

    cp : https://blog.csdn.net/qq_17766199/article/details/81433706 1.说明 官方原文如下: We hope the division be ...

  7. Android:你好,androidX!再见,android.support

    1.AndroidX简介 点击查看Android文档中对androidx的简介 按照官方文档说明 androidx 是对 android.support.xxx 包的整理后产物.由于之前的suppor ...

  8. Migrate to AndroidX 遇到的坑

    Androidx 迁移方法: 首先把 gradle 版本改为3.2.0以上,以及 compileSdkVersion 为28以上 然后 Android Studio 菜单栏 Refactor -> ...

  9. Androidx初尝及其新旧包对照表

    x的最低实验条件 AndroidStudio 3.2.0+ gradle:gradle-4.6以上 本次实验条件: AndroidStudio 3.3 (强制要求最低gradle版本为gradle-4 ...

随机推荐

  1. 自定义realm实现授权

    对用户和权限封装 更具用户查询已经拥有的角色 实现类 根据用户查询已经拥有的权限

  2. Vue混入的详解

    简介     混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项.钩子函数合并 ...

  3. 将`VuePress`建立的博客部署到GitHub或Gitee上

    将VuePress建立的博客部署到GitHub或Gitee上 在上一篇中,我们详细介绍了如何利用VuePress搭建起个人博客系统,但这只是在本地debug启动的,接下来,我们把它部署到Github网 ...

  4. python 验证码处理

    一. 灰度处理,就是把彩色的验证码图片转为灰色的图片. 二值化,是将图片处理为只有黑白两色的图片,利于后面的图像处理和识别 # 自适应阀值二值化 def _get_dynamic_binary_ima ...

  5. MVC案例

    MVC案例分析: - 没有业务层,直接Servlet调用Dao,所以也没有业务操作.所有在DAO直接获取Connection对象 -采用MVCDs设计模式 -使用到的技术: mvc设计模式:JSP  ...

  6. mysql 数据类型笔记

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...

  7. 内部服务器错误Internal server error解决方法

    这里说的内部服务器错误是网站前台能正常访问,而后台程序在执行某项任务/功能时所出现的内部服务器错误解决方法: 此错误通常是超时导致的,像程序在执行采集.静态页面生成时所耗时间太长导致达到超时限制的: ...

  8. Java实现 LeetCode 599 两个列表的最小索引总和(使用hash提高效率)

    599. 两个列表的最小索引总和 假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅 ...

  9. Java实现 蓝桥杯VIP 算法训练 比赛安排

    问题描述 设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛.设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛. 输入格式 输入 ...

  10. Java实现 蓝桥杯VIP 算法提高 快速幂

    算法提高 快速幂 时间限制:1.0s 内存限制:256.0MB 问题描述 给定A, B, P,求(A^B) mod P. 输入格式 输入共一行. 第一行有三个数,N, M, P. 输出格式 输出共一行 ...