当前位置:   article > 正文

迁移到AndroidX-你遇到的和即将遇到的,这里都有_didn't find class "androidx.core.app.corecomponent

didn't find class "androidx.core.app.corecomponentfactory" on path: dexpathl

一.  第一次迁移

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)).

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/536091
推荐阅读
相关标签
  

闽ICP备14008679号