迁移到AndroidX-你遇到的和即将遇到的,这里都有

本文详细记录了Android应用从支持库迁移到AndroidX的全过程,包括如何使用Android Studio进行一键迁移,以及在迁移过程中遇到的各种问题和解决办法。问题涉及重构错误、第三方库兼容性、Kotlin冲突、混淆设置等多个方面,提供了全面的解决方案,帮助开发者顺利进行AndroidX迁移。
摘要由CSDN通过智能技术生成

一.  第一次迁移

1.背景:

AndroidX 会将原始支持库 API 软件包映射到 androidx 命名空间。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。

2.如何迁移

这里推荐借助 Android Studio 3.2 及更高版本,您可以通过从菜单栏中依次选择 Refactor > Migrate to AndroidX,快速迁移现有项目以使用 AndroidX。

3.问题1

如图的意思,

before proceeding,we recommend that you make a backup of your project depending on your project dependencies,you might need to manually fix some errors after the refactoring in order to successfully compile your project. do you want to proceed with the migration backup project as zip file

在继续之前,我们建议您根据项目依赖性备份项目,您可能需要在重构之后手动修复一些错误,以便成功编译项目。是否要以zip文件的形式继续迁移备份项目?

很明确的指出,可能一键迁移后,依然有些错误,需要手动修复,建议大家备份,以便用来还原。好吧,做好踩坑准备!开干~

4.问题2

cannot perform refactoring operation.there were changes in code after usages have been found.please perform usage search again. would you like to rerun the search now?

好了,第二个问题来了,直译过来意思就是

无法执行重构操作。找到用法后代码中有更改。请再次执行用法搜索。是否立即重新运行搜索?

分析正:

既然studio提示,走到了这一步,那我们就按提示继续Rerun search,看看后况如何

分析反:

既然已经运行了一遍,估计就是自动迁移有问题的点,那我们就不强求,先试一试,若不行,待会儿就再Rerun search

5.问题3

973 usages found so far.are you sure you wish to continue?
直译过来就是

迄今为止发现的973种用法。您确定要继续吗?

我们点击continue,问题再多也要继续啊,迎难而上才是王道

6.重复:多次使用机器迁移,直至完全替换所有相关类

多来几遍这个过程,直至所有相关类替换完成,表现为下图

 

7.漏网之鱼:解决一些机器犯的错

机器替换后,长这样

实际应该长这样

具体的更改映射关系可点击这里查看

8.又有一些错误

看报错,不难发现,其实手动迁移依然存在很多未替换完全的包,我们手动替换,可通过上一条中给出的映射关系表,找正确的完整包名。

9.第三方库中的support包

因为butterknife未升级,导致生成的所有XXX

xxxActivity_ViewBinding文件都是support包

如何解决:在butterknife github项目中,果然看到了Androidx没迁移的issue,点击这里查看,看情况官方已经迁移,我们项目用的8.4.0版本,最新的版本是10.1.0,先看看issue中提到的9.0.0-SNAPSHOT能不能解决问题

10.接下来出现kotlin的问题

'getItemOffsets' overrides nothing

直译过来就是“GetItemOffsets”不重写任何内容,应该就是这段代码在Androidx包不存在,复写了一个不存在的方法,管他呢,业务逻辑,先注释

11.编译问题

Cause: zip file is empty

直译过来就是

原因:zip文件为空

备注:发现混淆开关被关闭

> Task :main.yunjiv2:transformClassesAndResourcesWithR8ForRelease FAILED
R8 is the new Android code shrinker. If you experience any issues, please file a bug at
https://issuetracker.google.com, using 'Shrinker (R8)' as component name. You can
disable R8 by updating gradle.properties with 'android.enableR8=false'.
Current version is: 1.4.94 (build 390954928f0db9c3b888a367f7f128ce3bbfb160 from go/r8bot (luci-r8-ci-archive-0-5g74)).

* What went wrong:
Execution failed for task ':main.yunjiv2:transformClassesAndResourcesWithR8ForRelease'.
> Zip error while reading archivezip file is empty
R8是谷歌的压缩代码的一个实验属性,可能存在不稳定。可以通过在 gradle.properties 文件中定义'android.enableR8=false'将其禁用。

12.将glide替换成4.9.0,glide中BitmapTransformation构造方法api有变动,兼容之

GlideCircleTransform中super(context);改成super();
GlideBlurTransformation中super(context);改成super();

13.编译报Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with no

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值