Android Q (Android 10.0)
通常,我们会在三月份的某个时候看到第一个开发人员的预览版。然后,在 Google I/O上,Google发布了另一个包含更多新功能和优化的开发人员预览版。最后,在八月的第一周,我们的手机上有了新出炉的Android版本。
Android Q版,最大的亮点集中在隐私安全和智能交互两方面,其中在隐私安全方面Android Q增加了外部存储策略变更、位置权限的后台访问限制、后台应用(不限于摄像头、麦克风等)的启动限制、设备识别码限制
权限收敛举措,其将限制应用在安卓设备上接受通话日志和短信权限的能力,并不再通过安卓通讯录API提供联系人互动数据,这些举措都是针对社交属性的权限进行的。其中读取通讯录、读取短信这两类敏感权限,仅被用户选择为默认拨打电话或通讯类APP(包括语音邮箱或类似APP)才能调用。对于读取联系人权限,谷歌目前将仅提供基本的联系数据,比如通讯APP仅能向用户提供最近的联系数据,几个月后安卓将彻底关闭联系人API。
Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加入了黑名单,而且 Google 要求下半年 APP 必须 target 28,这意味着现在的深灰名单也会生效;可以预见,在不久的将来,我们要跟大量的 API 说再见了。
Android Q 沙箱适配多媒体文件总结- https://segmentfault.com/a/1190000019224425
-- 关于Android Q分区存储的一些适配心得- https://juejin.im/post/5d0b1739e51d4510a73280cc
Android Q最大的变化莫过于是对用户隐私权的进一步保护,其中有一个feature,这就是分区存储(Scoped Storage, 也有翻译为存储沙盘化的)。
targetSDK = 29, 默认开启Scoped Storage, 但可通过在manifest里添加requestLegacyExternalStorage = true关闭;
targetSDK < 29, 默认不开启Scoped Storage, 但可通过在manifest里添加requestLegacyExternalStorage = false打开;
- 丰富了用户对权限的细粒度控制权,APP仅能在具体场景发生时获取权限:
- 设备位置权限的访问限制, 用户可进一步细粒度控制应用访问设备地理位置的时间,参照IOS系统对地理位置的授权机制, 在“始终访问”外,安卓系统也增加了“仅在使用该应用期间”才能获取设备当前位置信息得选项,确保用户可以自行控制是否允许后台应用获知地理位置;
- 应用程序后台运行的限制, Android Q 贯彻了PBD(privacy by default)的精神,原则上将禁止后台应用未经通知用户就直接启动(Android O已经要求启动麦克风、摄像头权限时进行增强提示,Android P直接禁止后台应用启用麦克风、摄像头及其他传感器访问权限,Android Q进一步扩大了对应用在后台启动的限制范围)。若后台应用运行的程序需启用,需要使用高优先级通知,并提供一个全屏 intent。否则,一旦应用程序尝试从后台运行,系统将会向用户发送警告消息;
- 访问外部存储中共享文件的限制, 为了让用户更好的控制个人文件,Android Q改变了应用程序访问设备外部存储中个人文件的方式,将读取外部存储空间(READ_EXTERNAL_STORAGE)和写入外部存储空间( WRITE_EXTERNAL_STORAGE)两个权限变更为更细粒度的的控制项,用户可细粒度地设置允许应用访问的共享文件的媒介类型(照片、视频或音频),从而让应用访问的数据类型和数量有必要性。并为每个应用程序单独设立了存储沙盒,应用程序读取自身的文件不需要特别授权,其他应用程序则无法直接访问;
- 公布了《唯一标识符最佳做法》
原则上建议避免识别更容易关联到特定个人的硬件标识符,而是使用实例 ID,也可以在安装时创建自己的 GUID,以变进一步降低隐私全风险。应用必须具有READ_PRIVILEGED_PHONE_STATE 签名权限才能访问设备的唯一标识符,并在具体场景中推荐了如下最佳做法:
- 避免使用硬件标识符。可以在大多数用例中避免使用 SSAID (Android ID) 和 IMEI 等硬件标识符,而必需功能也不会受到限制;
- 只为用户分析或广告用例使用广告 ID。使用广告 ID 时,务必遵守限制广告追踪标记,确保标识符无法与个人可识别信息 (PII) 建立关联,并避免桥接广告 ID 重置;
- 尽一切可能为防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。对于绝大多数非广告用例,应使用实例 ID 或 GUID;
- 使用适合应用 API 以尽量降低隐私权风险。为高价值内容保护使用 DRM API,为滥用预防使用 Safety Net API。Safety net API 是能够确定设备真伪而又不会招致隐私权风险的最简单方法。
- 默认启用 MAC 地址随机化功能
当设备连接到不同的 Wi-Fi 网络时,系统会随机生成不同的 MAC 地址。但在 Android 9 Pie 中,该特性为附加功能,开发者可自行选择是否启用。
Android Q- https://baike.baidu.com/item/Android%20Q/23325455?fr=aladdin
-- Android Q大概影响点有以下:
1,不能使用反射机制 (场景较多:皮肤,9.0适配,蓝牙电话等等);
2, 权限控制,无法获取到MAC地址(影响蓝牙电话);
3,不允许后台弹出界面(禁止后台启动Activity);
4,不允许读取应用沙箱外的文件(影响 皮肤,LOG等);