旧项目升级AndroidX过程及遇到问题解决方案

对于AndroidX的态度是:在AndroidX比较稳定的情况下跟上Google,因为越往后面可能出现某个功能是需要AndroidX才支持的,这时候再升级AndroidX风险不可估量。

1、菜单选择Refactor->Migrate to AndroidX,建议勾选备份项目压缩包(有SVN、Git之类自行而定)

旧项目升级AndroidX过程及遇到问题解决方案_第1张图片

编译器会帮我们找出需要重构的文件,所以直接点击“DO REFACTOR”就行

旧项目升级AndroidX过程及遇到问题解决方案_第2张图片

2、会在项目根目录的gradle.properties中自动添加配置

旧项目升级AndroidX过程及遇到问题解决方案_第3张图片

3、项目有可能会抛出以下错误:

(1)项目中集成Glide

旧项目升级AndroidX过程及遇到问题解决方案_第4张图片

旧项目升级AndroidX过程及遇到问题解决方案_第5张图片

一开始能想到的是 是不是缺少annotation(androidx)注解依赖

a、先尝试添加implementation 'androidx.annotation:annotation:1.1.0',本身类中是有import以下两个类引用,编译还是一样,应该是其他问题导致

import androidx.annotation.CheckResult;
import androidx.annotation.NonNull;

b、网上同样是升级AndroidX导致Glide找不到注解问题,添加annotationProcessor 'androidx.annotation:annotation:1.0.0'就行

(2)项目中集成ButterKnife

我的项目当前是9.0.0,Build抛出:

The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.

依赖新版本,然后反射正常:

旧项目升级AndroidX过程及遇到问题解决方案_第6张图片

4、对应修改编译版本、编译工具版本、目标版本;同时记得修改其他module的build文件配置

compileSdkVersion 29、buildToolsVersion '29.0.3'、targetSdkVersion 29

5、在ToolBar中Tablayout显示异常:com.google.android.material.tabs.TabLayout(项目中指定高度是wrap_content)

(1)未修改前运行效果

(2)修改后运行效果(添加属性app:tabPadding="12dp"或指定高度android:layout_height="45dp")

==>目前我的项目在升级过程中出现上面两个问题,有其他问题我会再记录到这里。(Android 10.0版本兼容问题另外发文)

 

你可能感兴趣的:(Android)