在开始版本中,官方的改动较大,相应的开发者适配成本还是很高的。
这里按照流程,大概说明一下Android Q适配需要注意的内容。虽然是大概介绍,但应该是目前最全的适配攻略了…
官方适配文档:
https://developer.android.com/about/versions/10
从Android Q(Android 10 API 29)开始,即便应用请求了权限,其对全局外部存储的访问也受到限制,鼓励开发者采用的新规范来。,需要请求权限来,由于此权限的强大访问能力,,确保应用的用途正当且必要。
为了解决Android文件混乱的问题,从Android Q(Android 10 API 29)开始,Android对进行一定的限制。
通过 与访问应用专属存储目录,:
通过申请权限,使用 API,访问共享媒体目录(如Photos、Screenshots等目录):
读取手机的Downloads文件夹,不需要任何权限,需要使用API Storage Access Framework
如果应用的并,那么该应用可以暂时继续使用旧的存储访问方式,但建议对应的开发者尽快迁移到Scoped Storage模型。
对于适配难度较大的应用,Android提供了一种方式可以暂时。
在androidmanifest配置文件中将设置为,可以。
将设置为,可以,但Google明确表示这是一个,并且在未来的Android版本中可能会移除或不再支持。因此,开发者应计划逐步迁移应用至遵循Scoped Storage模型。
requestLegacyExternalStorage="true"的使用方式如下:
官方描述如下:
https://developer.android.google.cn/training/data-storage/use-cases
外部存储访问权限范围限定为应用文件和媒体:
https://developer.android.com/about/versions/10/privacy/changes#scoped-storage
Manage scoped external storage access:
https://developer.android.com/training/data-storage/files/external-scoped
requestLegacyExternalStorage="true"官方描述:
https://developer.android.google.cn/training/data-storage/use-cases
MANAGE_EXTERNAL_STORAGE权限官方描述:
https://developer.android.google.cn/training/data-storage/manage-all-files
官方文档:针对非 SDK 接口的限制
官方从 Android 9(API 级别 28)开始,对应用使用的非 SDK 接口实施了限制。
如果你的APP通过引用或尝试,这些限制就会起作用。官方给出的解释是为了风险。
官方给出了一个检测工具,下载地址
Google官方 veridex下载:
https://android.googlesource.com/platform/prebuilts/runtime/+/master/appcompat
CSDN资源镜像 veridex下载:
https://download.csdn.net/download/aiwusheng/80980831
veridex使用方法:
以上截图中,blacklist、greylist、greylist-max-o、greylist-max-p含义如下:
如果觉得我没有说清楚,可以看以下
关于加固与热修复,官方也提供了相应的API
加固
热修复
注:
未适配Android Q的应用,若使用了blacklist 相关接口,在Android Q系统上打开时,会直接Crash!
未适配Android Q的应用,若使用了blacklist 相关接口,在Android Q系统上打开时,会直接Crash!
未适配Android Q的应用,若使用了blacklist 相关接口,在Android Q系统上打开时,会直接Crash!
,曾经用等设备信息标识设备的方法,从Android 10开始统统失效。而且无论你的APP是否是配过Android 10。
从Android10开始不再允许请求权限。
而且,无论你的App是否适配过Android Q(既是否大于等于29),均无法再获取到设备等设备信息。
受影响的API如下:
的应用,其在获取设备ID时,会直接返回
的应用,其在获取设备ID时,会直接跑出异常
如果您的App希望,可按以下方式进行适配:
谁能访问设备ID?
从Android 10开始,哪些应用还能访问设备ID?
Google官方的描述如下:
https://source.android.com/devices/tech/config/immutable-device-ids?hl=zh-cn
从Android10开始,默认情况下,在搭载 Android 10 或更高版本的设备上,系统会传输随机分配的 MAC 地址。(既从Android 10开始,普通应用已经无法获取设备的真正mac地址,标识设备已经无法使用mac地址)
Google给出的解决方案是:如果您的应用有 的需求,可用来标识设备。
也就是,曾经用等设备信息标识设备的方法,从Android 10开始统统失效。而且无论你的APP是否是配过Android 10。
求高手留言解答:
在Android 10系统上,目前本人尚未找到标识设备唯一性的办法,如果大家有办法希望留言告知!!!
主要包括:
Android 10 引入了 权限。
若应用在后台运行时,访问手机位置,需要动态申请该权限,用户则可以选择拒绝。
官方给出的数据,大部分用户对位置信息是比较敏感的。而且大部分用户是不允许应用在后台使用位置信息的。
具体内容请查看官方文档
不需要手动申请权限,但官方 API内部会向用户弹窗申请权限
Android 9 摄像头和麦克风 后台权限已经移除了
从Android P开始,除非你的应用是默认输入法,否则它无法访问用户的剪贴板数据;但向剪切板写入数据不影响。
关于夜间模式,感兴趣的同学,可以查看我的另一篇文档:
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.xrbh.cn/tnews/11009.html