这篇文章主要介绍了Android AndroidX的迁移,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1. 前言
AndroidX replaces the original support library APIs with packages in the androidx namespace. Only the package and Maven artifact names changed; class, method, and field names did not change.,Google不再对android support
库进行维护,android support
中的API由命名空间AndroidX
下的软件包进行替换,即相应的包名
和Maven工件名
发生改变。
2. 迁移AndroidX
2.1 迁移之前的准备
原有项目的support
库版本升级至28(Android 9),这也是support library
的最后版本,SDK 28 和AndroidX 1.0 是等效的。This is because AndroidX artifacts with version 1.0.0 are binary equivalent to the Support Library 28.0.0 artifacts.,
compileSdkVersion 28
建议使用Android studio 3.2或更高版本,(当前最新版已经到了4.0)。
gradle-wrapper.properties
中Gradle插件版本不低于4.6。
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
如果代码在版本控制器中,建议在单独的分支中迁移。
2.2 执行迁移
在gradle.properties文件中添加下列项。
# Android 插件会使用对应的 AndroidX 库而非支持库。
android.useAndroidX=true
# Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX,但并不完全自动。
android.enableJetifier=true
如果是AS 3.2或更高版本,则提供了一键迁移,选择菜单Refactor-> Migrate to AndroidX
,会提示备份当前工程,勾选Backup project as Zip file
,可以自动帮你备份。
左下角提示,点击Do Refactor
3 迁移结果
在一键迁移之后,gradle文件中implementation的所有support库被androidx替换,比如
implementation 'com.android.support:appcompat-v7:28.0.0'
变为
implementation 'androidx.appcompat:appcompat:1.0.0'
相应类名也会发生改变
import android.support.v7.app.AppCompatActivity;
变为
import androidx.appcompat.app.AppCompatActivity;
所以,可以先看看上面两项结果,如果没有替换成功,可手动替换,相应替换可查阅官方提供的CSV格式的依赖库映射文件和类映射文件。
rebuild project
,如果编译通过,那么恭喜你了,我反正是失败了。
4 迁移出错
4.1 可手动纠正的错
有的文件中没能替换掉,需要按照上述两项映射手动替换。
检查gradle中通过implementation
引入的库,比如implementation androidx.recyclerview:recyclerview:1.0.0'
,则一键迁移后导入的类为import androidx.appcompat.widget.RecyclerView;
,需要替换为import androidx.recyclerview.widget.RecyclerView;
,猜测只是全局替换掉support
字样。因为类似
还有GridLayoutManager
、FragmentTransaction
;`等。
4.2 第三方库冲突
support
库和androidx
是不能共存的,
- 情况1 :当迁移结束之后,理论上讲自己的项目使用的是
androidx
,但是老项目中导入了许多第三方的库,这些旧版本的库使用的是support
。 - 情况2:这种情况发生在未进行迁移的项目中,由于导入了最新版的第三方库,而该库使用了
androidx
,也会报错。
解决方法:
- 情况1,更新第三方库到最新版本或使用
androidx
的版本,如果这个库没有使用androidx
的版本,那就要找其他的方案代替吧(不知道是否是正确的解决方案)。 - 情况2:使用旧版本的第三方库。
总之,就是多build,根据异常信息解决问题。
5 参考资料
AndroidX预览
官方迁移教程
谷歌开发者-是时候迁移至 AndroidX 了
到此这篇关于Android AndroidX的迁移的文章就介绍到这了,更多相关AndroidX迁移内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Android AndroidX的迁移
基础教程推荐
- iOS开发使用XML解析网络数据 2022-11-12
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- Android开发Compose集成高德地图实例 2023-06-15
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- Android实现短信验证码输入框 2023-04-29
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- iOS开发 全机型适配解决方法 2023-01-14
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- IOS获取系统相册中照片的示例代码 2023-01-03
- Flutter进阶之实现动画效果(三) 2022-10-28