目录

1 概述

2 运行在 Android Q 上的所有应用

2.1 非 SDK 接口限制

2.2 WLAN 直连广播

2.3 Go 设备上的SYSTEM_ALERT_WINDOW

2.4 关于以旧版Android 系统为目标平台的应用的警告

2.5 应用使用情况

3 以 Android Q 为目标平台的应用

3.1 非 SDK 接口的受限情况出现变化

3.2 共享内存

3.3 Android 运行时只接受系统生成的 OAT 文件

3.4 在 ART 中强制要求 AOT 正确性

3.5 针对全屏 Intent 的权限变更


1 概述

Android Q 可增强对用户隐私的保护、提供吸引用户的新方式、更好地支持可折叠设备、Vulkan 扩展等等!

2 运行在 Android Q 上的所有应用

Android Q 平台做了一些行为变更,这些变更可能会影响您的应用。以下行为变更将影响在 Android Q 上运行的所有应用,无论其采用哪种“targetSdkVersion”都不例外。您应该测试您的应用,然后根据需要进行更改以适当地支持这些变更(如果适用)。

2.1 非 SDK 接口限制

为了确保应用稳定性和兼容性,Android平台开始限制您的应用可在Android 9(API级别28)中使用哪些非SDK接口。Android Q包含更新后的受限非SDK接口列表(基于与Android开发者之间的协作以及最新的内部测试)。

如果您不打算以Android Q为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非SDK接口(取决于您应用的目标API级别),但如果您使用任何非SDK方法或字段,则应用无法运行的风险终归较高。

如果您不确定自己的应用是否使用了非SDK接口,则可以测试该应用进行确认。如果您的应用依赖于非SDK接口,则应该开始计划迁移到SDK替代方案。如果您无法为应用中的某项功能找到使用非SDK接口的替代方案,则应该请求新的公共API。

有关详情,请参阅非SDK接口在Android Q中的受限情况出现变化以及对非SDK接口的限制。

2.2 WLAN 直连广播

在Android Q中,与WLAN直连相关的广播不再具有粘性。如果您的应用依赖于在注册时接收这些广播(因为其之前一直具有粘性),那么您的应用将不再接收这些广播。相反,请在初始化时使用适当的get()方法获取信息。

2.3 Go 设备上的SYSTEM_ALERT_WINDOW

在Android Q(Go版本)设备上运行的应用不具有SYSTEM_ALERT_WINDOW权限。这是因为绘制叠加层窗口会使用过多的内存,这对低内存Android设备的性能十分有害。

如果Go设备上的应用发送具有ACTION_MANAGE_OVERLAY_PERMISSION操作的Intent,则系统会自动拒绝此请求,并将用户转到设置屏幕,上面会显示不允许授予此权限,原因是它会降低设备的速度。如果Go设备上的应用调用Settings.canDrawOverlays(),则此方法始终返回false。

2.4 关于以旧版Android 系统为目标平台的应用的警告

在Android Q 中,当用户首次运行以Android 6.0(API 级别23)以下的版本为目标平台的任何应用时,Android 平台会向用户发出警告。如果此应用要求用户授予权限,则系统会先向用户提供调整应用权限的机会,然后才会允许此应用首次运行。

由于Google Play的目标API方面的要求,用户只有在运行最近未更新的应用时才会看到这些警告。对于通过其他商店分发的应用,我们也将于2019年引入类似的目标API方面的要求。要详细了解这些要求,请参阅在2019年扩展目标API级别方面的要求。

2.5 应用使用情况

Android Q 引入了与应用使用情况相关的以下行为变更:

  • UsageStats 应用使用情况的改进

当在分屏或画中画模式下使用应用时,Android Q现在能够使用UsageStats准确地跟踪应用使用情况。

此外,Android Q 现在可以跟踪免安装应用的使用情况。

  • 按应用开启灰度模式

Android Q 现在可以将应用设为灰度显示模式。

  • 暂停方面的改进

在Android Q 中,暂停的应用无法再播放音频。

3 以 Android Q 为目标平台的应用

Android Q 平台做了一些行为变更,这些变更可能会影响您的应用。以下行为变更仅影响以 Android Q 或更高版本为目标平台的应用。如果您的应用将 targetSdkVersion 设为“android-Q”或更高版本,则应修改您的应用以适当地支持这些行为(如果适用)。

此外,请务必查看对在 Android Q 上运行的所有应用都有影响的行为变更列表。

注意:除了此页面所列的变更以外,Android Q 还引入了大量变更和限制以增强用户隐私保护。有关详情,请参阅隐私权页面。

3.1 非 SDK 接口的受限情况出现变化

为了确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9(API 级别 28)中使用哪些非 SDK 接口。Android Q 包含更新后的受限非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。

如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 SDK 接口(取决于您应用的目标 API 级别),但如果您使用任何非 SDK 方法或字段,则应用无法运行的风险终归较高。

如果您不确定自己的应用是否使用了非 SDK 接口,则可以测试该应用进行确认。如果您的应用依赖于非 SDK 接口,则应该开始计划迁移到 SDK 替代方案。如果您无法为应用中的某项功能找到使用非 SDK 接口的替代方案,则应该请求新的公共 API。

有关详情,请参阅非 SDK 接口在 Android Q 中的受限情况出现变化以及对非 SDK 接口的限制。

3.2 共享内存

Ashmem 更改了 /proc/<pid>/maps 中的 dalvik 映射的格式,这会影响那些直接解析映射文件的应用。如果应用依赖于 dalvik 映射格式,则应用开发者应该在设备上测试新的 /proc/<pid>/maps 格式并相应地进行解析。

以 Android Q 为目标平台的应用无法再直接使用 ashmem (/dev/ashmem),而必须通过 NDK 的 ASharedMemory 类访问共享内存。此外,应用无法直接对现有 ashmem 文件描述符进行 IOCTL,而必须改为使用 NDK 的 ASharedMemory 类或 Android Java API 创建共享内存区域。这项变更可以提高使用共享内存时的安全性和稳健性,从而提高 Android 的整体性能和安全性。

3.3 Android 运行时只接受系统生成的 OAT 文件

Android 运行时 (ART) 不再从应用进程调用 dex2oat。这项变更意味着 ART 将仅接受系统生成的 OAT 文件。

3.4 在 ART 中强制要求 AOT 正确性

过去,如果编译时和运行时的类路径环境不同,则 Android 运行时 (ART) 执行的预先 (AOT) 编译可能会导致运行时崩溃。Android Q 现在始终要求这些环境上下文相同,因而导致出现了以下行为变更:

  • 自定义类加载器(即应用编写的类加载器,与 dalvik.system 软件包中的类加载器不同)并非由 AOT 编译。这是因为 ART 无法在运行时了解自定义的类查找实现。
  • 辅助 dex 文件(即由主 APK 外的应用手动加载的 dex 文件)现在由 AOT 在后台进行编译,由于首次使用编译可能代价过高,因此会导致在执行前出现意外的延迟。请注意,对于应用,建议您采用拆分方法,并弃用辅助 dex 文件。
  • Android 中的共享库(Android 清单中的 <library> 和 <uses-library> 条目)现在具有新的类加载器层次结构。

3.5 针对全屏 Intent 的权限变更

以 Android Q 或更高版本为目标平台并使用涉及全屏 Intent 的通知的应用必须在其应用的清单文件中请求 USE_FULL_SCREEN_INTENT 权限。这是普通权限,因此,系统会自动为请求权限的应用授予此权限。

如果以 Android Q 或更高版本为目标平台的应用试图创建使用全屏 Intent 的通知,而不请求 USE_FULL_SCREEN_INTENT权限,则系统会忽略此全屏 Intent 并输出以下日志消息:Package [pkg]: Use of fullScreenIntent requires the USE_FULL_SCREEN_INTENT permission

Android Q行为变更相关推荐

  1. Android Q Beta 正式发布 | 精于形,安于内

    移动行业在 2019 年创新不断,随着 5G 时代的到来与折叠屏技术的成熟,智能设备正在迈向未来新时代,而 Android 更是处在颠覆创新的风口浪尖.通过与生态圈伙伴们的深度合作,我们从软件到硬件不 ...

  2. Android Q 适配详细操作

    去年(2018年)我们陆续收到来自各个应用市场平台的API升级通知,下面以阿里应用分发平台通知为例: 亲爱的开发者:为保障用户合法权益,建立健康的移动应用环境,2018年7月18日,国内主流应用预置与 ...

  3. Android Q(10.0 API29)版本新特性和兼容性适配

    摘要 1.本文档基于谷歌AndroidQ官方文档和一加Q版本应用兼容性整改指导 2.本文档主要对影响比较大的部分进行简单总结,内容并不全面: 3.版本号对应关系: Android-Q = Androi ...

  4. Android P 和 Android Q的适配

    Android P non-sdk 接口限制 对非 SDK 接口的处理是 API 抽象化的实现细节 官方链接 https://developer.android.google.cn/reference ...

  5. Android Q 新特性

    Android Q 功能和 API 安全增强功能 改进了生物识别身份验证对话框 指定用户确认要求 改进了对设备凭据的回退支持 检查设备的生物识别功能 直接从 APK 运行嵌入式 DEX 代码 TLS ...

  6. Android Q Beta 3 亮相 Google I/O'19

    作者: Dave Burke, 工程部副总裁 I/O'19 期间 Android 达成了两项里程碑的成就: 其一,迎来第 10 个主版本:其二,全球活跃设备数量突破 25 亿台. Android Q ...

  7. Android Q(10.0)版本新特性和兼容性适配

    北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了.Android Q 为开发者们带来了许多新 ...

  8. Android Q 变更和新特性

    安全和隐私变更 隐私保护是Android Q重要的主题之一,Android Q带来了一系列增强用户隐私保护的变更. 1 应用文件存储空间限制 应用访问限制是Android Q影响最大变更之一.在And ...

  9. Android Q初窥(二)行为变更

    目录 行为变更 所有APP 手势导航 非 SDK 接口限制 NDK Bionic 库和动态链接器路径变更 系统二进制文件/库会映射到只执行内存 安全性 WLAN 直连广播 WLAN 感知功能 Go 设 ...

最新文章

  1. 战略设计,必须首先把握产业的脉搏
  2. 安装ArchLinux BIOS
  3. 【设计模式】面向对象 - 多态 ( 面向对象 3 要素 | 多态 提升 程序扩展性 | 多态示例 )
  4. 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
  5. Acwing 252. 树
  6. 分享一个剪切板的小软件CopyQ
  7. 飞鸽传书就不去袭击你们了
  8. 使用duilib开发半透明异形窗体程序(附源码和demo)
  9. python+nodejs+vue大学生心理健康测评管理系统
  10. 百度Site App的uaredirect.js实现手机访问,自动跳转网站手机版
  11. 妈妈帮上云之路:云上平台架构与运维实践
  12. HTB分层令牌桶排队规则分析
  13. waf指纹识别工具WAFW00F的使用
  14. react前端显示图片_react.js - 关于react引用本地静态资源图片的问题
  15. 科沃斯机器人充电红灯_科沃斯扫地机器人充电一直亮红灯
  16. char在mysql中的意思_mysql中char表示什么意思
  17. 银行卡格式化(每四位空格,删除添加,更变等)
  18. Java 三角形求边长和角度
  19. surface pro 7键盘只能识别功能区,无法输入字母和数字
  20. 解析|当前企业OA系统面对的困难与解决方案

热门文章

  1. 奇半数、偶半数—(N的奇半数就是N的奇数位组成的数,N的偶半数就是N的偶数位组成的数(从右侧开始数))
  2. delphi的connection closed Gracefully错误
  3. 【软件质量】软件安全性
  4. 安卓应用测试指南 pdf_YPlay月刊2020年10月软件应用合集
  5. 如何邀请好友注册您的网站(模拟百度网盘)
  6. 2020年链家网成都二手房销售情况可视化总结
  7. 关于MATLAB对已有数据的频谱分析及关心频率的幅值计算
  8. 2023年城投债投资研究报告
  9. 超详细 某代刷网站js逆向
  10. 打谱软件java版_finale打谱软件下载