1.遇到的问题
公司项目多,有些事java,有些是kotlin,有些是Android,有些是AndroidX,一些依赖和依赖库的更新使得调用的方法等不同,导致功能同步时效率及极其低下,于是打算把Android项目转成AndroidX。
2.为啥转AndroidX?
其实AndroidX并不是什么全新的东西,而是对Android Support Library的一次升级。因此,AndroidX上手起来也没有任何困难的地方,比如之前你经常使用的RecyclerView、ViewPager等等库,在AndroidX中都会有一个对应的版本,只要改一下包名就可以完全无缝使用,用法方面基本上都没有任何的变化。
但是有一点需要注意,AndroidX和Android Support Library中的库是非常不建议混合在一起使用的,因为它们可能会产生很多不兼容的问题。最好的做法是,要么全部使用AndroidX中的库,要么全部使用Android Support Library中的库。
而现在Android团队官方的态度也很明确,未来都会为AndroidX为主,Android Support Library已经不再建议使用,并会慢慢停止维护。另外,从Android Studio 3.4.2开始,我发现新建的项目已经强制勾选使用AndroidX架构了。
为了项目更好的维护和开发,推荐把项目转成AndroidX。
3.实操
自从在 Android 3.2 稳定版中就加入了 "Migrate to AndroidX" 选项,方便大家迁移。
是的,一键迁移,简直不要太爽~
1.在 "Refactor" 菜单中找到 "Migrate to AndroidX" 选项
2.点击Migrate开始迁移,backup preject 会把你的项目被分成一个压缩包
3.点击Migrate后,Android Studio就会自动检查你项目中所有使用Android Support Library的地方,这些需要修改的地方他会展示给你,点击Do Refactor后,会将它们全部改成AndroidX中对应的库。
4.如果你要检查你是否全部文件都转成AndroidX了,你可以重复123步骤:
转移成功后,你可以看到
1.项目的gradle.properties文件里配置已更改为:
android.useAndroidX=true android.enableJetifier=true
2.build.gradle的依赖库:当然这只是一些基础的库,比如,对应Android和AndroidX,有些第三方库的导入的库也不一样,我的项目里glide在同步后就爆红了,更改后就正常了。
implementation 'com.android.support:appcompat-v7:28.0.2' → implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'com.android.support:design:28.0.2' → implementation 'com.google.android.material:material:1.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.2' → implementation 'androidx.constraintlayout:constraintlayout:1.1.2' ...
3.各个class等文件里的import也进行了更改。
不得不说,这个一件迁移真的很方便,不然真的要改死。
如果出现部分迁移错误,请按照谷歌上的映射关系表:https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings手动修改依赖和https://developer.android.google.cn/jetpack/androidx/migrate/class-mappings手动修改导包。有些第三方库爆红了可以去看看其源码或者更新日志,一般改下依赖就可以了。
参考文章:是时候迁移至 AndroidX 了!