今天将AS升级到3.4.1后发现
可以升级个别依赖,看到实时实现的特性和bug修复,不需要对使用的所有其他库进行更新。这就好像使用Github上的开源库一样的,出了问题,我们可以提出bug和意见。作者修复后,发布新版本,我们就可以直接替换使用了。更加的透明便捷。
遂去官网了解到对我们的影响并不大,28.0.0的稳定版本还是采用android.support,只是后续版本功能都采用了androidx,并不是强制的,
我们常用的一些像butterknife,glide
等也都适配了androidx
长远看来好处还是不少的,所以要在这个飞速发展的社会去接受变化拥抱变化,然后就用了一天的时间对项目进行了迁移(要了老命了,项目庞大的谨慎)!!!
迁移步骤:
在
gradle.properties添加如下内容:
/**
*android.useAndroidX=true 表示当前项目启用 androidx
*android.enableJetifier=true 表示将依赖包也迁移到androidx 。如果取值为false,表示不迁移依赖包
*到androidx,但在使用依赖包中的内容时可能会出现问题
*/
android.useAndroidX=true
android.enableJetifier=true
AndroidStudio 3.2或更高(因为一个个去改太麻烦,这个版本有一键迁移的功能 Refactor -> Migrate to AndroidX 在执行该操作时会提醒我们是否将当前项目打包备份。如果你提前已经做好了备份,可以忽略;如果没有备份,则先备份。)
gradle
版本至少为3.2.0以上,以及compileSdkVersion
为28以上。(否则点击Migrate to Androidx会出现如下错误)
迁移完后手动修改包名(项目庞大的一定要谨慎备份,怕在这最后一步坚持不住!!!心累)
因为在 AndroidStudio 的 build 选项卡中一次只会报 部分错误!! 所以,在你修完第一批之后,后面还有N个部分等你去处理。此处要保持一个平静的心态!!!!!!!!
另外要注意Glide3.4对androidx不兼容,所以要先升级Glide到升级到 4.8.0 之后
如果你有幸遇到这个问题:[TAG] Failed to resolve variable '${animal.sniffer.version}'
建议:直接File->Invalidate Caches / restart,(我的是这样好了)
迁移完后会遇到很多莫名的错误,大家见招拆招吧,优先考虑是否某文件引用了xxx.support.xxx的情况,如果引用,记得替换成 androidx.xxx.xxx
包下的对应控件
参考博客:
https://www.jianshu.com/p/41de8689615d