Android Studio旧项目升级Gradle至28.0.0版本时的AndroidX迁移报错问题
嗨,我完全懂你现在的困扰——2016年的老项目升级到support库28.0.0后,一直弹出迁移AndroidX的提示,自己折腾了半天也没搞定对吧?别着急,我来一步步帮你解决这个问题。
先搞明白为什么会报错
其实这个提示不是“错误”,而是官方的强制建议:28.0.0是旧版Android Support Library的最后一个版本,只支持到Android Pie(9.0),从Android Q(10.0)开始官方不再维护这个旧库,转而全力支持AndroidX。所以只要你用了28.0.0的support库,IDE就会一直提醒你迁移,而且硬扛着用后续可能会遇到兼容性问题。
最省心的解决方法:用Android Studio自带的迁移工具
这是官方推荐的方式,能自动帮你搞定大部分替换工作:
- 第一步:先给项目做个备份!老项目文件结构复杂,备份后操作更安心。
- 第二步:打开你的项目,点击顶部菜单栏的
Refactor→Migrate to AndroidX... - 第三步:弹出的对话框里,勾选
Backup project before migration(双重保险),然后点击Migrate - 第四步:IDE会自动扫描项目里所有需要替换的依赖、代码引用,扫描完成后会弹出预览窗口,你可以查看要修改的文件列表,确认没问题就点击
Do Refactor - 第五步:等待迁移完成后,IDE会提示同步Gradle,点击
Sync Now即可。
如果自动迁移没成功,试试手动修改
要是自动迁移后还有残留问题,或者你想自己动手调整,可以按以下步骤来:
配置Gradle属性:打开项目根目录下的
gradle.properties文件,添加这两行代码:android.useAndroidX=true android.enableJetifier=true这两行的作用是强制项目使用AndroidX,并且自动把第三方依赖里的旧support库转换成AndroidX版本。
替换依赖库:打开你模块下的
build.gradle文件(就是你贴出来的那个),把所有com.android.support开头的依赖替换成对应的AndroidX依赖,比如:com.android.support:appcompat-v7:28.0.0→androidx.appcompat:appcompat:1.6.1(可以用IDE提示的最新稳定版)com.android.support:design:28.0.0→com.google.android.material:material:1.9.0com.android.support:support-v4:28.0.0→androidx.legacy:legacy-support-v4:1.0.0com.android.support:support-vector-drawable:28.0.0→androidx.vectordrawable:vectordrawable:1.1.0com.android.support:cardview-v7:28.0.0→androidx.cardview:cardview:1.0.0
修正代码导入:检查项目里的Java/Kotlin代码,把原来的
import android.support.xxx替换成import androidx.xxx,Android Studio会给这些错误标红,按Alt+Enter就能快速修复。同步并重构项目:点击IDE右上角的
Sync Project with Gradle Files,然后执行Build→Clean Project,再Build→Rebuild Project,完成后应该就不会再弹出那个提示了。
备注:内容来源于stack exchange,提问作者LastCode

