Android Q 的预览版发布快半个月了,新一年的 Android 适配工做也要提上日程了,当前国产安卓机的系统更新愈来愈快,对及时适配的要求也就愈来愈高。根据预览版放出的博客和已更新的文档,咱们能够提早准备处理一些适配的内容。html
目前看来,开发者能够提早准备的工做包括:android
所有的 Android Q 更新内容能够阅读原文(android-developers.googleblog.com/2019/03/int…bash
PS:尝试使用 Android Q beta 的话,下载完 SDK 后须要这样配置 build.gradle:网络
compileSdkVersion 'android-Q'
defaultConfig {
...
targetSdkVersion 'Q'
...// 目前不存在数字29哦
}
复制代码
对于 Android 用户来讲,这是一项很是优秀的改进。自从 Android M 以来,我已经遇到许多不给读写外存权限就没法使用的 App 了。结果是打开文件管理就能看到一堆乱七八糟的文件和文件夹,这对习惯本身整理存储空间的人来讲太痛苦了。异步
但读写外存的权限并不是必要的。经过Context.getExternalFilesDir
能够获取到属于 App 自身的文件路径,一般是~/Android/data/<package-name>/**/
。在该目录中读写文件均不须要申请权限,当 App 被卸载时,该文件夹及内容也会所有删除。测试
Android Q 中删除了READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
两项危险权限,限制 App 只能使用本身的应用空间存放文件。gradle
当 App 须要保存一些不能随卸载删除的文件时,须要根据存放位置动态申请新增的权限:READ_MEDIA_IMAGES
,READ_MEDIA_VIDEO
或 READ_MEDIA_AUDIO
(分别对应系统的媒体文件夹)。 比较特殊的是 Downloads 文件夹:写入和读取自身写入的数据不须要申请权限,但想获取其余 App 存进去的文件时,必须使用系统的文件选择器,由用户选择。优化
以上几个路径以外的全部位置均不可访问,是否是很让人安心呢?ui
[模拟器测试结果]
测试安装了一个 targetSdkVersion=26 的 demo 项目,除了动态申请存储权限时的文案以外一切都没改变,应该是兼容了 targetSdkVersion 小于 Q 的 App。考虑到应用市场对 targetSdkVersion 要求(今年只要求到28),最晚要在明年 Android R 面世以前完成适配。google
针对全部运行在 Android Q 设备上的 App:
/proc/net
:但文档说相关内容能够经过NetworkStatsManager
和ConnectivityManager
获取READ_PRIVILEGED_PHONE_STATE
去保护设备的惟一标识符。官方的解决方案是这样:developer.android.com/training/ar…针对 targetSdkVersion 在 Android Q 的 App:
虽然听起来不太常见,但其实不少 App 的 启动页都是倒计时后进入首页的,这期间按 HOME 退出的话,就会触发后台启动 Activity。若是该行为被阻止,再次点击应用图标就可能卡在启动页进退两难了…因此这里应该须要增长一下对生命周期的处理吧。
可是经测试,虚拟机的系统镜像还能正常启动,只多了一条 Toast 提示。具体的解决方案要再等等啦。
其余的更新内容估计要等 I/O 以后上真机调试了,就简要描述一下吧
ACCESS_BACKGROUND_LOCATION
原文还提到了一些新特性,好比获取图片景深信息,神经网络 API,新的音视频解码器等。若是工做中用得上相关内容就早点了解一下吧。
祝喜欢 Android 的各位工做顺利~