Android Q 变更和新特性
1.安全和隐私变更
隐私保护是Android Q重要的主题之一,Android Q带来了一系列增强用户隐私保护的变更。
1)应用文件存储空间限制
应用访问限制是Android Q影响最大变更之一。在Android Q系统中,应用只可以通过路径读取自己应用沙箱内的文件,如果需要读取应用沙箱外的文件,需要使用安卓统一接口来实现。该变更对大部分应用都会产生较重大的影响,需要开发者进行重点关注,后续我们也将以专题的形式来详细解读应该变更的影响和应对策略。
2)禁止访问不可更改的ID
Android Q将禁止非系统应用访问用户不可更改的ID,包括IMEI号、SN号、USB序列号等。系统WiFi Mac地址默认是随机生成的,不再是固定的Mac地址,防止用户隐私被追踪。该变更将对依赖设备信息的业务产生影响,比如数据上报、用户画像、推荐和广告等,需要开发者进行重点关注。
3)不允许后台弹页面
Android Q将禁止应用后台启动activity,这将对后台弹出页面使用场景产生重大影响,如:闹钟、音乐锁屏、应用后台安装等。在目前的预览版中,该变更未正式实施,但是对有后台弹页面的行为会产生toast警告,提示开发者进行相关的整改。
该变更对有通知的应用,widget和快捷方式没有影响,开发者可以将一些必要的场景改用通知的方式去实现。
4)位置权限态化
Android Q中,应用在申请地理位置授权时,将增加使用时可用和始终可用两个选择。这将对需要后台GPS定位的使用场景产生影响,开发者在使用后台定位时需要增加前台服务。
5)剪切板访问限制
Android Q中,系统将禁止应用在后台访问剪切板,以更好地保护用户隐私。
6) 不允许隐藏图标
不允许应用隐藏图标,如果没有设置启动页面,点击图标会跳转到应用的详情页面
2.安全
1)存储加密
在Android P中,谷歌已经开始限制Hidden API的使用,在Android Q中,新增了max-o和max-p两种类型,黑名单的数量也大幅增加。这将对所有使用非SDK接口的应用产生影响。
2)改进的生物识别技术
扩展了 BiometricPrompt框架,以支持面部等被动身份验证方法,并添加隐式和显式身份验证流程。在显式流程中,用户必须在身份验证期间明确确认TEE中的事务。隐式流程设计用于具有被动身份验证的事务的轻量级替代方案
3.AOSP变更
1)Hidden API
在Android P中,谷歌已经开始限制Hidden API的使用,在Android Q中,新增了max-o和max-p两种类型,黑名单的数量也大幅增加。这将对所有使用非SDK接口的应用产生影响。
开发者需要自行检测非SDK接口的名单,并将还在使用的黑名单接口反馈给谷歌申请加到灰名单中,手机厂商也会配合应用进行测试验证和相关的适配工作。
2)折叠屏适配
现在越来越多的手机厂商发布了折叠屏的手机,谷歌在Android Q系统中提供了统一的折叠屏方案和适配接口,系统增加了最小比例设置的参数minAspectRatio,应用可以通过meta-data声明。
该变更对所有在折叠屏设备上的应用都会产生影响,主要需要解决手机从折叠形态到展开状态转化时应用重新加载和展开状态下应用显示比例适配两个问题。
4.多媒体新特性
1)格式图片支持
在Android P系统中已经增加了对Heif格式图片的软解码和软编码的支持,系统图库也支持Heif格式图片显示。在Android Q中,将支持拍照直接生成Heif格式的图片。这将对图片读取和分享的使用场景产生影响,相关的应用(如社交类、图片美化类)应进行Heif格式图片的支持适配。
2)并发录音
在Android P及之前的安卓系统中,不支持并发录音,录音焦点不可抢占。在Android Q中增加了对并发录音的支持,录音焦点可以被抢占。这将对后台录音的场景产生影响,可能会录到空数据。有相关使用场景的应用需要通过接口去监听录音焦点的状态变化,并及时作出应对。
3)录音source限制
Android Q系统对AUDIO_SOURCE_VOICE_CALL类型的录音源增加权限限制,CAPTURE_AUDIO_OUTPUT需要系统签名才可以使用,其他应用无法申请。该变更将导致应用无法录音,一些社交类软件的语音电话功能会受到影响。
开发者需要将录音源改为AUDIO_SOURCE_VOICE_COMMUNICATION来规避这个问题的发生。
4) MediaProvider
Android Q系统增加了对MediaProvider的sql语句管控,mediastore中定义的列以外的信息,无法查询,不合法的查询列会返回空值。
文件的位置信息被删除,将无法通过MediaProvider进行查询。开发者需要对查询的语句进行排查和整改,动态申请ACCESS_MEDIA_LOCATION权限,然后通过MediaProvider的openFile获取文件的exif信息。
5. 系统应用变更
1)安装器接口废弃
Android Q系统将禁止调用intent(action为INSTALL_PACKAGE)拉起安装器,该应用将对TargetSdkVersion<24的应用产生影响,应用内安装的功能将无法实现。开发者可以使用FileProvider进行适配,使用content Uri替代file Uri。
2)手势导航
用户可以在设备上启用手势导航。如果用户启用了手势导航,则会影响设备上的所有应用,无论应用是否针对API级别29.例如,如果用户从屏幕边缘滑入,系统会将该手势解释为后退导航,除非应用程序专门为屏幕的某些部分覆盖该手势。
要使您的应用与手势导航兼容,您需要将应用内容从边缘扩展到边缘,并适当地处理冲突的手势。有关信息,请参阅手势导航 文档。
3)HTTPS连接更改
如果运行Android Q的应用程序null进入 setSSLSocketFactory(),IllegalArgumentException 则会发生。在以前的版本中,传递null到setSSLSocketFactory() 了如通过在当前同样的效果默认出厂。
4)不推荐使用android.preference库
从android.preferenceAndroid Q开始,该库已被弃用。开发人员应该使用AndroidX首选项库,这是Android Jetpack的一部分。有关其他资源以帮助迁移和开发,请查看更新的“设置指南”以及我们的公共示例应用程序和 参考文档。
5)AndroidQ 设备上无法获得android.permission.SYSTEM_ALERT_WINDOW 权限
AndroidQ 设备上无法获得android.permission.SYSTEM_ALERT_WINDOW 权限。 已经在升级 到Q 之前app拿到了这个权限的保留此权限, 新装app或者没有拿到这个权限的 升级到Q 之后无法获得此权限。
app使用带ACTION_MANAGE_OVERLAY_PERMISSION权限操作的intent,系统会自动拒绝,并且直接跳转到设置。 在AndroidQ 上面调用Settings.canDrawOverlays(),此方法始终反馈false。
6)Android Q中使用/场景 全屏intent 通知
Android Q中使用/场景 全屏intent 通知,必须加入 android.permission.USE_FULL_SCREEN_INTENT 权限。
6 OS特性变更
1)禁止非系统应用调用dex2oat
Android Q将禁止非系统应用调用dex2oat,该变更通过selinux权限进行管控,只对TargetSdkVersion≥Q的应用产生影响,需要开发者进行排查是否有相关操作。此外该变更还会对加固程序产生影响,需要加固厂商进行重点关注。
2)API LEVEL政策变更
2019 Google Play上架API LEVEL政策规定,对于新上架的应用,2019年8月1日以后,应用TargetSdkVersion需要大于等于28;对于更新的应用,2019年11月1日前需要将应用TargetSdkVersion升级到28及以上。