还在用-android-support?谷歌强推-AndroidX-啦

3. AndroidX 迁移步骤?

1. 更新 Android Studio 与 Gradle 版本

  • 将 Android studio 升级到 3.2 及以上;

  • Gradle 插件版本改为 4.6 及以上;

  • compileSdkVersion 版本升级到 28 及以上;

  • buildToolsVersion 版本改为 28.0.2 及以上。

2. 迁移 AndroidX 配置

  • 在项目的gradle.properties文件里添加如下配置:

android.useAndroidX=trueandroid.enableJetifier=true

配置说明
android.useAndroidX=true表示当前项目启用 androidx
android.enableJetifier=true表示将依赖包也迁移到androidx

备注:enableJetifier 如果取值为 false, 表示不迁移依赖包到 androidx,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为 false。

3. 修改依赖库

修改项目 app 目录下的 build.gradle 依赖库,具体可以参照 AndroidX 变化中的依赖库映射。

修改前修改后
implementation ‘com.android.support:appcompat-v7:28.0.2’implementation ‘androidx.appcompat:appcompat:1.0.0’
implementation ‘com.android.support:design:28.0.2’implementation ‘com.google.android.material:material:1.0.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.2’implementation ‘androidx.constraintlayout:constraintlayout:1.1.2’

4. 依赖类重新导包

将原来 import 的 android.** 包删除,重新 import 新的 androidx.** 包

import android.support.v7.app.AppCompatActivity; → import androidx.appcompat.app.AppCompatActivity;

5. 一键迁移 AndroidX 库

AS 3.2 及以上版本提供了更加方便快捷的方法一键迁移到 AndroidX。选择菜单上的 ReFactor —— Migrate to AndroidX… 即可。(如果迁移失败,就需要重复上面 1,2,3,4 步手动去修改迁移)

备注:如果你的项目 compileSdkVersion 低于 28,点击 Refactor to AndroidX… 会提示:

Q&A

  • 同一个项目中 Android Support 和 AndroidX 可以共存吗?

不可以共存。需要将依赖修改为Android Suppor或AndroidX中任一种。

  • 执行 Migrate to AndroidX 之后就完成 AndroidX 迁移了?

不一定。部分控件的包名/路径名转换的有问题,所以还需要我们手动调整(包括修改xml布局文件和.java/.kt 文件)。

  • DataBinding 中的错误(重名 id 错误)?

在 AndroidStudio3.2 + androidx 环境下,对错误的检查和处理更为严格。如果同一个xml布局文件中存在同名id,
在之前的版本中,我们可以正常编译和运行,但是,在新的环境下, 必然会报错,错误信息如下:

  • attr.xml 中重复的属性名称会报错?

在迁移到 androidX 之前,我们为自定义控件编写自定义属性时,可以与android已有的属性重名,
但是,在AndroidX环境下不行了,如果存在重名的情况,必然会报错——会提示你重复定义。

  • 错误示例
... <!-在迁移到androidx之前,这样写虽然不规范,但是能用,不报错-> ...
  • 正确示例
... <!-迁移到androidX之后,必须使用android:xxx 属性,不能定义android已有的属性-> ...
  • Glide 中的注解不兼容 androidX?

迁移到 androidX 之后,Glide 中使用的
android.support.annotation.CheckResult 和
android.support.annotation.Non 这两个注解无法迁移。之前有用户在 Glide 中提过 issue: https://github.com*/bumptech/glide/issues/3*185**

在上述 issue 中有用户表示,将 Glide 升级到 4.8.0 之后,可以正常迁移。但是,我这边并不行。然后,我先升级了 Glide , 又在 gralde 文件中增加了 support.annotation ,这样才能正常编译通过。貌似在后续 Glide 5.x 版本中会完成对 androidx 的完全兼容。

  • 规范包名(即文件夹名)?

这里所说的包名,指的是项目中的文件夹名称。在之前版本中,我们命名包名时可能会出现大写字母,虽然这并不符合 Java 命名规范,但起码能正常编译和运行。然而,升级到 AndroidStudio3.2 + androidX 环境后,必须严格遵守命名规范,否则,可能报错,从而导致不能正常编译和运行。

学习分享

最近有朋友在我面前炫耀,自己在阿里内部得到了一份多牛批的学习资料,对于他这种只炫耀不分享的人,我表示不就是一份资料吗?我自己整理的比你更加系统,全面谁不会一样!在这里我不小气,免费分享给大家。学无止尽,祝大家都能找到自己满意的工作。

点击【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!

Android进阶学习全套手册

Android高级架构师进阶知识体系图

尾声

你不踏出去一步,永远不知道自己潜力有多大,千万别被这个社会套在我们身上的枷锁给捆住了,30岁我不怕,35岁我一样不怕,去做自己想做的事,为自己拼一把吧!不试试怎么知道你不行呢?

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

获取](https://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值