AS版本对应的gradle版本可以看这里 https://developer.android.google.cn/studio/releases/gradle-plugin#updating-gradle
注:关于AS如何升级,以及升级后的一系列问题网上已经有很多教程,读者可以自行搜索。
#Android 插件会使用对应的 AndroidX 库而非支持库。 android.useAndroidX=true #Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX,但并不完全自动。 android.enableJetifier=true
step 2:如下图,AS打开项目 -> 菜单栏Refactor -> Migrate to AndroidX…
step 3:如下图,执行后会弹框询问是否备份。勾选上,会生成一个.zip文件,点击Migrrate。此时会弹出一个弹框,选择保存到哪里即可。
step 4:找到底部的Find,点击 Do refactor 即可(即重构项目)。AS会自动将原先的 support 依赖切换成 androidx ,并且修改项目中使用到的依赖库路径。
step 5:点击菜单栏 -> File -> Invalidate Caches /Restart 重启AS,清除缓存重启下。
emmm…到这里,老项目迁移到AndroidX的基本工作就已经完成,如果你人品好,程序就已经迁移完毕。但是如果项目比较复杂,基本上都是一堆报错。这时。不要着急,不要着急,不要着急,重要的事情要说三遍!!!!!点击下图中任意一个,重新编译项目。这时在底部的Build就会有错误出现的原因,这时就需要你自己慢慢跟着错误定位到位置去修改了。这里笔者总结了几个自己遇到的问题,做以下总结供读者参考
①去除旧包引用,导入新包。(注释掉就行,待会全局替换要用到) ②使用全局替换(Ctrl+Shift+R)将旧包替换为新包。如果你有代码洁癖,顺便Alt+Shift+O清除没用包,Ctrl+Shift+L格式化代码。 ③将Build中所有错误按照①②步骤处理完之后,点击Make Project重构项目。 不出意外的话,会出来一堆新的错误。这时只要根据以上三个步骤,重复,重复,重复。直到没问题!!!暂时没发现什么捷径,无奈.jpg
part 2:引入的第三方库内部仍然使用support包造成的问题。
从github上找到最新的依赖版本,替换原来的版本。重新Sync now即可。不出意外的话在底部的Build还会出现一堆错误,这时重复part 1的工作即可。如下图。(一般都是glide,butterknife这些)
完成了以上两步之后,程序就不会有报错了。但是,如果你点击Run运行到手机。你会发现有的界面根本显示不了,甚至有可能连启动都启动不了!! 原因就是res的导包问题,虽然从support迁移到androidx可以自动更换依赖,但是如下图:
可以看到,导入的包并不是我们想要的androidx包。
所以,还需要我们手动替换。不过还好,有了前面的操作之后,这点问题都比较容易解决。
Ctrl+Shift+R全局替换 -> Builde找下一个原因 -> Make Project -> Build找原因 -> 定位到问题 -> Ctrl+Shift+R全局替换 -> Builde找下一个原因 -> Make Project -> Build找原因 -> 定位到问题 -> Ctrl+Shift+R全局替换-> Builde找下一个原因 -> Make Project…直到没发现问题,套娃结束,迁移androidx成功!!!!