Android项目升级API29 + 迁移AndroidX - Go语言中文社区

Android项目升级API29 + 迁移AndroidX


昨天上线更新项目,收到反馈Google自11月2日后上线的项目,targetSDKVersion必须要在29以上,我的项目目前适配的是28
google要求
一开始以为简单的升级一下就好,把该改的改完后发现报错,编译不通过。
编译错误
网上查询后发现,自API29后,项目必须迁移AndroidX才可以用,原来的support只支持到28,并且后续官方可能不会继续维护了,看来迁移到AndroidX是大势所趋。

第一步

在一切开始前,确保Android studio版本3.2及以上,新建分支进行升级操作。
更新项目版本到29,原始项目API是28
29

第二步

用AS自带的Refactor > Migrate to AndroidX升级项目至AndroidX
Migrate to AndroidX
出现弹出框,大致意思是一键迁移后可能还会有些错误,需要自己手动修改,是否需要把当前项目备份一个Zip压缩包,最好备份一下,不需要可以不勾选,点击Migrate
migrate
项目开始编译,编译器会帮我们找出需要重构的文件,点击do Refactor就好
在这里插入图片描述

第三步 编译完成

编译完成后,运气好基本没错,运气不好可能会满江红。我第一次迁移的是个小项目,编译完成后没啥问题。
迁移完成后会在项目根目录的gradle.properties中自动添加配置
在这里插入图片描述
项目build.gradle文件里依赖更新,由
support依赖
变为
新的androidx依赖
页面中的依赖变更
依赖变更

第四步 结束

如果和我一样没有遇到问题,直接ReBuild,然后运行,适配Android Q就可以了。
如果遇到报红,可以手动修改,将support依赖变更为对应的androidx依赖。
使用ctrl+h,进行全局搜索,查找对应的依赖表实现更新。
在这里插入图片描述
如果遇到包找不到等问题,可能是缓存导致,File——Invalidate Caches/Restart重启一下试试
在这里插入图片描述
可能还会有的第三方库会受到影响,我这里没有遇到,以后遇到了在更新。

第五步 进行Android Q适配

一般应用会影响到的主要有存储权限变更,IMEI 等设备信息无法获取等

Build.getSerial();
TelephonyManager.getImei();
TelephonyManager.getMeid();
TelephonyManager.getDeviceId();
TelephonyManager.getSubscriberId();
TelephonyManager.getSimSerialNumber();

以上API受影响等问题。

基本上迁移到这里就结束了,Android10.0的适配没有详细说,主要记录一下迁移的过程,附上support和AndroidX对照表。

support和androidx映射类

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/mr_hmgo/article/details/109814777
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-15 21:36:34
  • 阅读 ( 1075 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢