本页面总结了 Android 9 版本的主要功能,并提供了指向其他信息的链接。这些功能摘要根据功能在本网站上的文档位置进行组织。请参阅2018 年 8 月网站更新,以获取有关版块移动和重命名的指南。
构建
通用系统映像 (GSI)
通用系统映像 (GSI) 是针对 Android 设备调整配置的系统映像。通用系统映像 (GSI)包含有关搭载 Android 9 推出的设备与升级到 Android 9 的设备的 GSI 之间差异的详细信息。
架构
硬件抽象层 (HAL)
HIDL 框架向后兼容性
HIDL 框架向后兼容性验证是一种验证框架向后兼容性的方法。
动态可用的 HAL
动态可用的 HAL 支持在 Android 硬件子系统未使用或不需要时动态关闭它们。
HIDL
HIDL MemoryBlock
HIDL MemoryBlock 是构建在 hidl_memory
、HIDL @1.0::IAllocator
和 HIDL @1.0::IMapper
之上的抽象层。它专为具有多个共享单个内存堆的内存块的 HIDL 服务而设计。
设备树叠加层
压缩叠加层
Android 9 及更高版本在使用设备树表标头版本 1 时,支持设备树 Blob 叠加层 (DTBO) 映像中的压缩叠加层。
DTO 更新
Android 9 及更高版本要求引导加载程序在修改 设备树叠加层 (DTO) 中定义的属性之前,将统一设备树 Blob 传递到内核。
DTBO 映像标头版本控制
Android 9 及更高版本在 DTBO 映像标头中包含一个版本字段。
DTBO 验证
Android 9 及更高版本需要 DTBO 分区。要添加节点或更改 SoC DT 中的属性,引导加载程序必须在 SoC DT 上动态叠加设备特定的 DT。如需了解详情,请参阅编译和验证。
内核合规性
Android 9 及更高版本包含影响内核、其接口以及 DTBO 用法的要求。如需了解详情,请参阅以下页面
供应商 NDK
设计变更
如需了解 Android 9 及更高版本中 VNDK 设计变更的信息,请参阅以下页面
ABI 检查器
ABI 稳定性页面介绍了应用二进制接口 (ABI) 检查器,该检查器可确保对 VNDK 库所做的更改保持 ABI 兼容性。
VNDK 快照
即使系统映像和供应商映像是从不同版本的 Android 构建的,系统映像也可以使用 VNDK 快照 向供应商映像提供正确的 VNDK 库。
供应商接口对象 (VINTF 对象)
供应商接口对象部分中的以下页面介绍了 Android 9 及更高版本中的更新
HIDL 弃用时间表
以下页面介绍了 Android 如何弃用和移除 HIDL HAL
引导加载程序
产品分区
Android 9 及更高版本支持使用 Android 构建系统构建 /product
分区。以前,Android 8.x 强制将片上系统 (SoC) 特有组件从 /system
分区分离到 /vendor
分区,而没有为从 Android 构建系统构建的 OEM 特有组件分配空间。
规范启动原因合规性
规范启动原因页面介绍了 Android 9 及更高版本中对引导加载程序启动原因规范的更改。
System as root
所有搭载 Android 9 及更高版本推出的设备都必须使用 system-as-root,它将 ramdisk.img
合并到 system.img
中(也称为 no-ramdisk),而后者又作为 rootfs 挂载。
启动映像标头版本控制
在 Android 9 及更高版本中,启动映像标头包含一个用于指示标头版本的字段。引导加载程序必须检查此版本字段并相应地解析标头。
恢复模式中的 DTBO
为了防止非 A/B 设备上因恢复映像与 DTBO 分区不匹配而导致的 OTA 失败,恢复映像必须包含来自 DTBO 映像的信息。
显示
显示屏开孔
显示屏开孔允许应用开发者创建沉浸式的、边缘到边缘的体验,同时仍然为设备正面的重要传感器留出空间。
旋转建议
对 屏幕旋转行为 的更新 Android 9 及更高版本包括对面向用户的控件的支持,即使设备位置发生变化,该控件也可以将屏幕旋转固定为横向或纵向。
同步的应用过渡
同步的应用过渡允许新的应用过渡动画。
文本分类(以前称为 TEXTCLASSIFIER)
Android 9 及更高版本包含一个 文本分类器服务,它是实现文本分类的推荐方式,也是默认的服务实现。
广色域
Android 9 及更高版本包含对广色域的支持,包括
- 高动态范围 (HDR)
- 处理 BT2020 色彩空间中的内容,但不是作为最终目标数据空间
要使用广色域,设备的完整显示堆栈(例如屏幕、硬件合成器、GPU)必须支持广色域或缓冲区格式。即使硬件支持,设备也不需要声明支持广色域内容。但是,应启用广色域以充分利用硬件。为避免视觉体验不一致,不应在运行时关闭广色域。
兼容性
Android 兼容性定义文档
Android 9 兼容性定义文档 (CDD) 基于 以前的版本 进行了迭代,更新了新功能以及对先前发布的功能的要求的更改。
设置
更好的应用微件
Android 应用微件框架提高了用户互动方面的可见性,尤其是在用户删除或手动添加微件时。此功能默认随 Launcher3 提供。
制造商需要更新其启动器应用(随设备附带)以支持此功能(如果不是基于 Launcher3)。OEM 需要在其默认启动器中支持新的 widgetFeatures 字段。
请注意,仅当启动器按预期实现该功能时,该功能才能端到端地工作。AOSP 包含一个示例实现。请参阅 AOSP Change-Id Iccd6f965fa3d61992244a365efc242122292c0ca 以获取提供的示例代码。
设备状态更改通知到软件包安装程序
每当区域设置或显示密度等属性发生更改时,都可以向持有 INSTALL_PACKAGES
权限的应用发送受保护的系统广播。接收器可以在清单中注册,并且进程会唤醒以接收广播。这对于希望在此类更改时安装应用的其他组件的软件包安装程序很有用,这并不常见,因为符合触发此广播条件的配置更改很少见。
设备状态更改通知源代码位于 platform/frameworks/base
下的以下位置
api/system-current.txt
core/java/android/content/Intent.java
core/res/AndroidManifest.xml
services/core/java/com/android/server/am/ActivityManagerService.java
信息架构
对“设置”应用的信息架构的更改提供了更多功能和更轻松的实现。
测试
Atest
Atest 命令行工具允许您在本地构建、安装和运行 Android 测试,从而大大加快了测试重新运行的速度,而无需了解 Trade Federation 测试工具的命令行选项。
兼容性测试套件
CTS 下载
支持 Android 9 的兼容性测试套件 (CTS) 软件包可在 CTS 下载页面上找到。包含的测试的源代码可以与开源树中的 android-cts-9.0_r1
标记同步。
CTS 选项
对于 Android 9,CTS v2 获得了以下命令和参数
run retry
重试之前会话中失败或未执行的所有测试。‘--shard-count
将 CTS 运行分片为给定数量的独立块,以便在多台设备上并行运行。
此外,之前未记录的命令 --retry-type
已添加到同一 CTS v2 控制台命令参考中。
安全单元 (SE) 服务
安全单元服务通过识别设备是否具有 SE HAL 实现以及如果有,有多少个,来检查全局平台支持的安全单元。这用作测试 API 和底层安全单元实现的基础。
传感器融合盒
传感器融合盒用于相机图像测试套件 (Camera ITS) 传感器融合测试和多摄像头同步测试,并为测量 Android 手机的相机和其他传感器的时间戳精度提供一致的测试环境。有关详情,请参阅以下页面
- 传感器融合盒快速入门指南提供了首次设置传感器融合测试和传感器融合盒的步骤。
- 传感器融合盒组装提供了组装传感器融合盒的步骤。
广角 ITS-in-a-box
广角 ITS-in-a-box是一个自动化系统,旨在测试相机 ITS 中的广角 (WFoV) 和普通视角 (RFoV) 相机系统。
供应商测试套件
主机控制器架构
供应商测试套件 (VTS) 主机控制器架构是 VTS 测试框架与其基于云的测试服务服务集成的架构。
服务名称感知 HAL 测试
VTS 服务名称感知 HAL 测试支持根据运行 VTS 测试的设备获取给定 HAL 实例的服务名称。
HAL 可测试性检查
VTS HAL 可测试性检查包含一种运行时方法,用于使用设备配置来识别应为该设备目标跳过哪些 VTS 测试。
自动化测试基础架构
自动化测试基础架构是一个 VTS 基础架构,用于在运行 AOSP 通用系统映像 (GSI) 的合作伙伴设备上自动测试 VTS、CTS 或其他测试。
调试
高级遥测
在 Android 中,遥测是自动收集有关设备、Android 系统和应用的使用情况和诊断信息的过程。在以前的 Android 版本中,遥测堆栈受到限制,并且没有捕获识别和解决系统可靠性以及设备或应用问题所需的信息。这使得识别问题的根本原因变得困难(如果不是不可能的话)。
Android 9 包含 statsd
遥测功能,它通过更快地收集更好的数据来解决此缺陷。statsd
收集应用使用情况、电池和进程统计信息以及崩溃。数据经过分析并用于改进产品、硬件和服务。
如需了解更多详情,请参阅 frameworks/base/cmds/statsd/
。
安全功能
应用签名
v3 APK 签名方案支持 APK 密钥轮换。
生物识别支持
Android 9 包含公共类 BiometricPrompt
,应用可以使用它以设备和模态无关的方式集成生物识别身份验证支持。如需详细了解如何集成生物识别堆栈以包含 BiometricPrompt
,请参阅 生物识别。
动态分析
Android 9 包含对更多漏洞利用缓解和分析工具的支持。
控制流完整性 (CFI)
控制流完整性 (CFI) 是一种安全机制,可禁止更改已编译二进制文件的原始控制流图,从而大大增加执行此类攻击的难度。
内核 CFI
除了默认启用的系统 CFI 之外,Android 9 及更高版本还包括对内核控制流完整性 (CFI)的支持。
加密
基于文件的加密
基于文件的加密 (FBE) 已更新为与 可采纳存储 一起使用。新设备应使用基于文件的加密而不是全盘加密。
元数据加密
Android 9 及更高版本包括在存在硬件支持的情况下对元数据加密的支持。通过元数据加密,启动时存在的单个密钥使用基于文件的加密来加密任何未加密的内容。
密钥库
Android 9 及更高版本包括 Keymaster 4,它具有以下功能。
StrongBox
Android 9 及更高版本包括对存储在专门为高安全性应用(例如嵌入式 安全单元 (SE))构建的物理上独立的 CPU 中并在此 CPU 中使用的 Android 密钥库密钥的支持。StrongBox Keymaster 是离散安全硬件中 Keymaster HAL 的实现。StrongBox 具有
- 离散 CPU
- 集成安全存储
- 高质量真随机数生成器
- 防篡改封装
- 侧信道抗扰性
安全密钥导入
要将密钥安全地导入 Keymaster 4,使用定义密钥使用方式的授权规范加密在设备外创建的密钥。
3DES 支持
Keymaster 4 包括 3DES,以兼容使用 3DES 的旧版系统。
版本绑定
为了支持 Treble 的模块化结构并打破 system.img
与 boot.img
的绑定,Keymaster 4 更改了 密钥版本绑定模型,为每个分区设置单独的补丁程序级别。这样,每个分区都可以独立更新,同时仍提供回滚保护。
Android Protected Confirmation API
搭载 Android 9 安装的受支持设备使开发者能够使用 Android Protected Confirmation API。借助此 API,应用可以使用 ConfirmationPrompt
的实例向用户显示提示,要求他们批准简短声明。此声明允许应用再次确认用户想要完成敏感交易,例如付款。
SELinux
每个应用的 SELinux 沙盒
应用沙盒具有新的保护和测试用例,以确保所有以 Android 9 及更高版本为目标的非特权应用都运行单独的 SELinux 沙盒。
Treble SELinux 变更
Android 9 及更高版本中对 Treble SELinux 的更新记录在 SELinux 部分的多个页面中。
供应商 init
供应商 init 通过使用单独的 SELinux 域来运行具有供应商特定权限的 /vendor
命令,从而弥补了 Treble 系统/供应商拆分中的漏洞。
系统属性
Android 9 限制了 系统属性 在 system
和 vendor
分区之间不必要的共享,并提供了一种确保共享系统属性之间一致性的方法。
SELinux 属性测试
Android 9 包括新的构建时测试,以确保特定位置中的所有文件都具有适当的属性。例如,sysfs
中的所有文件都具有所需的 sysfs_type
属性。
音频
高分辨率音频效果
对高分辨率音频效果的更新包括将效果处理从 int16 转换为浮点格式,并增加了同步客户端输出轨道、最大客户端/服务器内存和混合轨道总数。
相机
外部 USB 相机
Android 9 及更高版本支持使用标准 Android Camera2 API 和相机 HIDL 接口来使用即插即用 USB 相机(即网络摄像头)。
运动跟踪
相机设备可以通告运动跟踪功能。
多摄像头支持
多摄像头支持包括通过由两个或多个指向同一方向的物理摄像头设备组成的新逻辑摄像头设备对多摄像头设备提供 API 支持。
会话参数
实现会话参数可以通过允许相机客户端在捕获会话初始化阶段主动配置部分成本高昂的请求参数来减少延迟。
单生产者、多消费者缓冲区
单生产者、多消费者相机缓冲区传输是一组方法,允许相机客户端在捕获会话处于活动状态且相机流式传输正在进行时动态添加和移除输出表面。
连接
通话和消息
实施数据套餐
Android 9 及更高版本提供了对运营商使用 SubscriptionPlan API 实施数据套餐的改进支持。
第三方通话应用
Android 9 及更高版本提供 API,允许第三方 (3P) 通话应用处理并发的运营商来电,并将通话记录在系统通话记录中。
运营商
运营商识别
在 Android 9 中,AOSP 添加了一个运营商 ID 数据库,以帮助进行运营商识别。该数据库通过提供一种识别运营商的通用方法,最大限度地减少重复逻辑和分散的应用体验。
eSIM
嵌入式 SIM (eSIM 或 eUICC) 是允许移动用户下载运营商配置文件并激活运营商服务的最新技术,无需物理 SIM 卡。在 Android 9 及更高版本中,Android 框架提供了用于访问 eSIM 和管理 eSIM 上的订阅配置文件的标准 API。如需了解详情,请参阅
IMS 设置的多 SIM 卡支持
Android 9 及更高版本改进了 IP 多媒体子系统 (IMS) 的用户设置。您可以在每个订阅的基础上设置通过 LTE 的语音 (VoLTE)、视频通话和 Wi-Fi 通话,而不是在所有订阅之间共享这些设置。
SIM 卡状态广播
在 Android 9 及更高版本中,Intent.ACTION_SIM_STATE_CHANGED
已弃用,并添加了两个单独的卡状态和卡应用状态广播:TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED
和 TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED
。
通过这些更改,只需要知道卡是否存在的接收器不必监听应用状态更改,而只需要知道卡应用是否准备就绪的接收器不必监听卡状态更改。
这两个新的广播是 @SystemApis,并且不是粘性广播。只有具有 READ_PRIVILEGED_PHONE_STATE
权限的接收器才能接收这些广播。
当您解锁设备时,Intent 不会重新广播。依赖于在解锁之前发送的广播的接收器必须使用 directBootAware
,或者它们必须在用户解锁后查询状态。可以使用 TelephonyManager 中的相应 API getSimCardState()
和 getSimApplicationState()
查询状态。
Wi-Fi
运营商 Wi-Fi
运营商 Wi-Fi 功能允许设备自动连接到运营商实施的 Wi-Fi 网络。在拥塞严重或蜂窝网络覆盖范围极小的区域(例如体育场或地下火车站),运营商 Wi-Fi 有助于改善连接并分流流量。
MAC 随机化
MAC 随机化允许设备在探测新网络时(当前未与网络关联时)使用随机 MAC 地址。在 Android 9 及更高版本中,可以启用开发者选项以使设备在连接到 Wi-Fi 网络时使用随机 MAC 地址。
自动开启 Wi-Fi
当启用自动开启 Wi-Fi 功能后,每当设备靠近具有足够高的相对接收信号强度指示器 (RSSI) 的已保存 Wi-Fi 网络时,Wi-Fi 都会自动重新启用。
Wi-Fi 往返时间
Wi-Fi 往返时间 (RTT) 允许设备测量到其他支持设备的距离,无论它们是接入点 (AP) 还是 Wi-Fi Aware 对等设备(如果设备上支持 Wi-Fi Aware)。此功能构建在 IEEE 802.11mc 协议之上,并使应用能够使用增强的位置精度和感知能力。
Wi-Fi 评分改进
改进的 Wi-Fi 评分模型可以快速准确地确定设备何时应退出已连接的 Wi-Fi 网络或进入新的 Wi-Fi 网络。这些模型通过避免连接中的空白为用户提供可靠且无缝的体验。
查看并调整 config.xml
资源中的 RSSI 值,尤其是以下值
config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz
Wi-Fi STA/AP 并发
Wi-Fi STA/AP 并发是设备同时在站点 (STA) 和接入点 (AP) 模式下运行的能力。对于支持双频段同步 (DBS) Wi-Fi 的设备,这开辟了诸如用户想要启用热点 (SoftAP) 时不会中断 STA Wi-Fi 等功能。
WiFiStateMachine 改进
WifiStateMachine
是用于控制 Wi-Fi 活动、协调用户输入(操作模式:热点、扫描、连接或关闭)以及控制 Wi-Fi 网络操作(例如扫描或连接)的主要类。
在 Android 9 及更高版本中,Wi-Fi 框架代码和 WifiStateMachine
的实现已重新架构,从而减少了代码大小,使 Wi-Fi 控制逻辑更易于理解,提高了控制粒度,并增加了单元测试的覆盖率和质量。
在较高层面上,WifiStateMachine
允许 Wi-Fi 处于以下四种状态之一
- 客户端模式(可以连接和扫描)
- 仅扫描模式
- SoftAP 模式(Wi-Fi 热点)
- 已禁用(Wi-Fi 完全关闭)
每种 Wi-Fi 模式对运行服务都有不同的要求,应以一致的方式进行设置,仅处理与其操作相关的事件。新的实现将代码限制为与该模式相关的事件,从而缩短了调试时间并降低了因复杂性而引入新错误的风险。除了显式处理模式功能外,线程管理也以一致的方式处理,并且异步通道的使用已作为同步机制消除。
Wi-Fi 权限更新
在 Android 9 及更高版本中,默认情况下启用 CHANGE_WIFI_STATE
应用权限。您可以在设置 > 应用和通知 > 特殊应用访问权限 > Wi-Fi 控制中的设置页面上禁用任何应用的此权限。
应用必须能够处理 CHANGE_WIFI_STATE
权限未被授予的情况。
要验证此行为,请运行 roboelectric 和手动测试。
对于手动测试
- 转到设置 > 应用和通知 > 特殊应用访问权限 > Wi-Fi 控制。
- 选择并关闭您的应用的权限。
- 验证您的应用可以处理
CHANGE_WIFI_STATE
权限未被授予的场景。
WPS 弃用
由于安全问题,WiFiManager
中的 Wi-Fi Protected Setup (WPS) 在 Android 9 及更高版本中已被弃用和禁用。但是,WiFiDirect
仍然在 WPA supplicant 中使用 WPS。
图形
实现
Vulkan 1.1 API
Android 9 及更高版本支持实现 Vulkan 1.1 图形 API。
用于窗口转换跟踪的 WinScope 工具
Android 9 及更高版本包含 WinScope 工具,用于跟踪窗口转换。WinScope 提供基础架构和工具,用于记录和分析转换期间和转换后的窗口管理器状态。它允许记录和逐步执行窗口转换,同时将所有相关的窗口管理器状态记录到跟踪文件中。您可以使用此数据来重放和逐步执行转换。
WinScope 工具源代码位于 platform/development/tools/winscope
。
互动
车载音频
车载音频介绍了与汽车相关的 Android 实现的音频架构。
神经网络 (NN) HAL 定义了各种加速器的抽象。这些加速器的驱动程序必须符合此 HAL。
车辆 HAL
车辆属性介绍了对车辆 HAL 接口的更改。
GNSS 卫星选择
当使用新的全球导航卫星系统 (GNSS) HAL(v1.1+)时,Android 框架会监控 Android 设置。合作伙伴可以从 Google Play 服务或其他系统更新中更改设置。这些设置告诉 GNSS HAL 是否不应使用某些 GNSS 卫星。这在发生持久性 GNSS 卫星或星座错误时,或者为了更快地应对 GNSS HAL 实现问题(当混合使用不同时间系统的星座和外部事件时,例如闰秒、日期或周数翻转时可能发生)时非常有用。
GNSS 硬件型号
在 Android 9 中,GNSS HAL 版本 1.1 或更高版本可以将有关硬件 API 的信息传递到平台。平台需要实现 IGnssCallback
接口,并将句柄传递给 HAL。GNSS HAL 通过 LocationManager#getGnssHardwareModelName()
方法传递硬件型号信息。设备制造商应与他们的 GNSS HAL 提供商合作,尽可能提供此信息。
权限
配置自由裁量访问控制更新
配置自由裁量访问控制 (DAC) 包含对用于扩展文件系统功能的 Android ID (AID) 机制的更新。
特权应用权限白名单
在 Android 9 及更高版本中,如果存在应被拒绝的权限,请编辑 XML 以使用 deny-permission
标记,而不是早期版本中使用的 permission
标记。
数据
带宽估计改进
Android 9 提供了对带宽估计的改进支持。如果 Android 应用可以访问可用的数据带宽,则可以为视频通话和视频流媒体做出更合适的分辨率设置。
在运行 Android 6.0 或更高版本的设备上,想要获得蜂窝网络带宽估计的调用者会调用 ConnectivityManager.requestBandwidthUpdate()
,并且框架可能会提供估计的下行链路带宽。
但在运行 9 或更高版本的设备上,当估计带宽发生重大变化时,onCapabilitiesChanged()
回调会自动触发,并且调用 requestBandwidthUpdate()
是空操作;相关的 getLinkDownstreamBandwidthKbps()
和 getLinkUpstreamBandwidthKbps()
将填充物理层提供的更新信息。
此外,设备可以通过 ServiceState.getCellBandwidths()
检查 LTE 蜂窝带宽。这使应用程序能够确定给定蜂窝小区上有多少带宽(频率)可用。蜂窝带宽信息通过隐藏菜单提供,以便现场测试人员可以检查最新信息。
eBPF 流量监控
eBPF 网络流量工具结合了内核和用户空间实现,用于监控设备自上次设备启动以来的网络使用情况。此工具提供了额外的功能,例如套接字标记、分离前台/后台流量以及每 UID 防火墙,以根据设备状态阻止应用访问网络。
恢复到较低版本的 API
设备现在可以从未来版本的操作系统恢复。当用户升级了手机但随后丢失或损坏手机时,这尤其有用。
如果 OEM 修改了任何系统软件包(android、system、settings)的备份代理,则这些代理应处理恢复在更高平台版本上制作的备份集,而不会崩溃,并且至少恢复一些数据。
考虑使用验证器来检查给定备份数据的无效值,并仅恢复有效数据,如 core/java/android/provider/SettingsValidators.java
中所示。
此功能默认处于启用状态。可以通过 Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION
关闭 SettingsBackupAgent 对从未来版本恢复的支持。除非设备制造商扩展了 ROM 中包含的备份代理之一(或添加了自定义代理),否则无需额外的实现。
此功能允许系统从未来版本的平台恢复;但是,合理预期恢复的数据将不完整。以下说明适用于以下备份代理
PackageManagerBackupAgent 通过格式版本控制支持未来版本的备份数据;此处的扩展必须与当前的恢复代码兼容,或者遵循类中的说明,其中包括增加正确的常量。
SystemBackupAgent 在 Android 9 及更高版本中指定
restoreAnyVersion = false
。它不支持从更高版本的 API 恢复。SettingsBackupAgent 在 Android 9 及更高版本中指定
restoreAnyVersion = true
。通过验证器提供部分支持。如果目标操作系统中存在设置的验证器,则可以从更高版本的 API 恢复设置。添加任何设置都应附带其验证器。查看类以了解详细信息。ROM 中包含的任何自定义备份代理都应在其备份数据格式发生不兼容更改时增加其版本代码,并确保
restoreAnyVersion = false
(默认值),如果他们的代理未准备好处理来自未来版本的代码的备份数据。
企业
托管配置文件改进
托管配置文件的 UX 更改使用户可以更轻松地识别、访问和控制托管配置文件。
暂停 OTA
新的 @SystemApi 让设备所有者可以无限期暂停 OTA 更新,包括安全更新。
性能
Health 2.0
Android 9 及更高版本包括 android.hardware.health
HAL 2.0,这是从 health@1.0 HAL 的主要版本升级。有关更多信息,请参阅以下页面
APK 缓存解决方案
Android 9 及更高版本包括 APK 缓存解决方案,用于在支持 A/B 分区的设备上快速安装预加载的应用。OEM 可以将预加载和流行的应用放置在 APK 缓存中,该缓存主要存储在新的 A/B 分区设备上的空 B 分区中,而不会影响任何面向用户的数据空间。
Profile-guided optimization
Android 9 及更高版本支持在具有 blueprint 构建规则的本机 Android 模块上使用 Clang 的 Profile-guided optimization (PGO)。
预写式日志记录
SQLiteDatabase 的一种特殊模式称为兼容性预写式日志记录 (WAL),允许数据库使用 journal_mode=WAL
,同时每个数据库最多保持一个连接。
启动时间
Android 9 更改了启动时间优化,如优化启动时间中所述。
电源
后台限制
Android 9 及更高版本包括后台限制,允许用户限制可能耗尽电池电量的应用。系统还可能建议禁用对设备健康状况产生负面影响的应用。
无电池设备
Android 9 比以前的版本更优雅地处理无电池设备。Android 9 删除了无电池设备的代码,这些代码默认假定电池存在、充电 100%、健康状况良好且热敏电阻上的温度读数正常。