Android 12 和 Android 12L 版本说明

本页总结了 Android 12 和 Android 12L 版本中的主要功能,并提供了指向其他信息的链接。这些功能摘要按照功能在本网站上的文档位置进行组织。

架构

AlwaysOnHotwordDetector 类更新

从 Android 12 开始,AlwaysOnHotwordDetector 类(包括其工厂方法 android.service.voice.VoiceInteractionService.createAlwaysOnHotwordDetector())是系统 API (@SystemApi) 而不是公共 API。AlwaysOnHotwordDetector 类旨在供具有系统级权限的 Assistant 应用使用,这些应用通常与操作系统版本捆绑在一起。在 Android 11 及更低版本中,API 受检查机制保护,确保调用方是当前活跃的 Assistant 应用,从而使其他第三方应用无法使用该 API。

此外,Android 12 还包括声音触发器功能增强功能,以改进通过声音触发器 API 对与麦克风使用相关的权限的归属和强制执行。麦克风使用情况(包括间接使用情况,例如通过 SoundTriggerManagerAlwaysOnHotwordDetector 类)归因于调用 AlwaysOnHotwordDetector 类的原始软件包(Assistant 应用)。这提高了用户隐私和使用麦克风的软件包的透明度。在 Android 11 及更低版本中,麦克风使用情况归因于系统用户,因为原始软件包并非直接使用声音触发器 API,而是通过驻留在 system_server 进程中的更高级别服务使用。

这些变更的影响如下:

  • 使用 AlwaysOnHotwordDetector 类的非系统应用无法针对 Android 12 API 进行编译,因为该 API 已从公共表面移除。
  • 使用 AlwaysOnHotwordDetector 类的现有系统应用在运行时可能会被拒绝使用声音触发器功能。要解决此问题并允许这些应用通过声音触发器访问麦克风,请为这些应用声明 RECORD_AUDIOCAPTURE_AUDIO_HOTWORD 权限。

Android Rust 语言支持

Android 12 现在支持 Rust 代码使用。设置文档中新增了一个部分,提供了关于使用 Rust 在 Android 上进行开发的指南。

如需详细了解 Android Rust、各种模块以及查看示例(以及获取 IDE 设置信息),请参阅新的 Android Rust 部分:Android Rust 简介

启动映像标头

Android 12 添加了启动映像标头版本 4 的使用,这是支持通用内核映像 (GKI) 架构的设备的主要启动映像。Android 12 还提供 boot_signature,用于检查内核和 ramdisk 的完整性。在 VtsSecurityAvbTest 中完成的检查是使用 GKI 架构的设备所必需的。

要了解详情,请参阅启动映像标头页面。

启动配置实现变更

Android 12 中的启动配置功能是一种用于将配置详情从 build 和启动加载程序传递到 Android 12 的机制,它取代了 Android 11 及更低版本中使用的 androidboot.* 内核 cmdline 选项。此功能提供了一种将 Android 用户空间的配置参数与内核的配置参数分开的方法。

要了解详情,请访问实现启动配置

自定义字体后备

在 Android 12 之前,更新 AOSP 中设备安装的字体文件(在 /system/fonts 分区中)或供应商分区(在 /product/fonts/system/fonts 分区中)需要 OEM 进行系统更新。此要求对表情符号兼容性有重大影响。在 Android 12 中,您可以使用 FontManager 系统服务来管理已安装的字体文件,并在无需系统更新的情况下更新设备安装的字体文件。

如需了解有关此新功能的信息,请参阅实现自定义字体后备

DMA-BUF 堆

在 Android 12 中,GKI 2.0 使用 DMA-BUF 堆替换了 ION 分配器

启用语言区域过滤器

Android 12 引入了一项功能,您可以使用该功能为新的设备类型配置默认系统语言和语言区域过滤器。这使您能够在出厂校准期间通过 oem/oem.prop 设置过滤器属性值和默认语言,并在无需将过滤器烘焙到系统映像中的情况下配置限制。

如需了解详情,请参阅启用语言区域过滤器

刷写供应商 ramdisk

Android 12 引入了通过 fastboot 命令刷写供应商 ramdisk 的支持,该命令从设备拉取完整的 vendor_boot 映像。该命令会提示主机端 fastboot 工具读取供应商启动标头、重新映像并刷写新映像。此支持包括启动加载程序和 fastbootd 变更,以获取必要的数据(例如,分区大小和偏移量)。

如需了解详情,请参阅刷写供应商 ramdisk,访问用户空间中的 Fastboot页面。

GKI 版本控制

从 Android 12 开始,可以从内核中提取 KMI 版本的 Android 版本部分,并在 build 时将其注入到设备清单中。

如需了解更多详情,请参阅GKI 版本控制

MM 事件 - 历史内存统计信息

在 Android 12 上启动的设备可以使用 mm_events,这是一组与内存相关的统计信息,会在系统遇到内存压力时定期捕获。mm_eventsperfetto 跟踪机制集成,并且性能开销极小。统计信息收集在可配置的时间段内保持活动状态,并以固定的时间间隔捕获统计信息。

如需了解如何使用 mm_events 统计信息,请参阅MM 事件 - 历史内存统计信息

系统提醒窗口限制

为了提高 Android 生态系统的安全性,Android 12 增加了获取 SYSTEM_ALERT_WINDOW 权限的难度,并允许第三方应用阻止来自其他第三方应用的叠加层。

在 Android 12 中,预安装的应用不会自动获得 SYSTEM_ALERT_WINDOW appOp。预安装的应用必须先获得用户的明确授权,才能使用它。系统应用仍然默认获得该权限。

第三方应用可以选择不让应用叠加层在其上绘制。这提供了一种针对 cloak and dagger 样式攻击的保护机制。所有应用均可使用此功能,以便银行应用等对安全性敏感的应用能够保护自身。要使用此功能,应用必须在其清单中声明 HIDE_OVERLAY_WINDOWS 权限。

HIDE_NON_SYSTEM_OVERLAY_WINDOWS(signature|privileged) 已弃用,建议改用 HIDE_OVERLAY_WINDOWS

供应商启动分区变更

使用启动映像标头版本 4 的 Android 12 设备支持 vendor_boot 分区中的多个供应商 ramdisk。这些 ramdisk 片段在供应商 ramdisk 部分中串行连接。供应商 ramdisk 表描述了供应商 ramdisk 部分的布局和每个供应商 ramdisk 片段的元数据。

由于 Android 12 及更高版本中的供应商启动分区发生了变更,因此您不能使用 default 作为供应商 ramdisk 片段名称;它被指定为保留名称。在任何情况下都不允许使用它来命名供应商 ramdisk 片段。

要了解详情,请参阅供应商启动分区多个供应商 ramdisk

音频

组合音频设备路由

组合音频设备路由功能添加了对同时将音频流式传输到多个音频设备的支持。使用此功能,特权应用可以通过系统 API 为特定策略选择多个首选设备。应用可以通过使用此功能提供的公共 API 更精确地发现音频设备的功能。

如需了解详情,请参阅组合音频设备路由页面。

音频 HAL V7 的更新

为了解决向后兼容性问题,从 Android 13 开始,所有 HAL 变更都必须使用 Stable AIDL。为了为此未来的 AIDL 采用做好准备并加以改进,Android 12 中的音频 HAL 版本 7 进行了重大变更。

如需了解详情,请参阅音频 HAL V7 的更新部分和音频政策示例

相机

折叠屏设备的相机静态元数据条目

Android 12 引入了 deviceStateOrientationMap 相机静态元数据条目,该条目允许相机 HAL 将因设备折叠状态更改而触发的传感器方向更改告知相机客户端和相机框架。折叠屏设备可以选择使用一个或多个逻辑摄像头,这些摄像头由物理设备组成,这些物理设备对于不同的设备折叠状态具有不同的传感器方向。deviceStateOrientationMap 元数据条目允许相机框架确保在捕获结果中活跃物理 ID 发生更改时应用必要的输出表面转换。

如需了解更多详细信息,请参阅metadata_definitions.xml

CameraX 供应商扩展程序支持要求

在 Android 12 中,支持 CameraX 扩展程序的设备必须将 ro.camerax.extensions.enabled 属性设置为 true,这允许查询设备是否支持扩展程序。

如需了解详情,请参阅在设备上设置供应商库

Quad Bayer 相机传感器支持

Android 12 引入了平台 API,使应用能够利用具有超高分辨率相机传感器的设备,这些传感器通常带有 Quad 或 Nona Bayer 模式,可在图像质量和弱光性能方面提供灵活性。新 API 支持这些传感器的行为,同时考虑到它们在“最大分辨率”模式下而不是在“默认”模式下运行时可能支持不同的数据流配置和组合。

要实现对超高分辨率相机传感器的相机 HAL 支持,设备制造商必须实现以下文件的变更:

兼容性

SIM 卡的 ADN 支持要求

从 Android 12 开始,用于 CTS 测试的设备中的所有 SIM 卡都必须支持存储缩位拨号号码 (ADN)。

如需了解更多详情,请参阅屏幕和存储空间

相机 ITS 更新

Android 12 引入了对相机图像测试套件 (ITS) 的各种更新,包括新的和更新的测试、重构为 Python 3 以及采用 Mobly 测试框架。

如需了解详情,请参阅Android 12 相机图像测试套件版本说明

CDD 更新

Android 12 兼容性定义文档以前版本的基础上进行了迭代,更新了新功能并更改了先前发布的功能的要求。

连接

5G 网络切片

Android 12 提供对 5G 网络切片的支持,网络切片使用网络虚拟化将单个网络连接划分为多个不同的虚拟连接,这些连接为不同类型的流量提供不同数量的资源。这允许网络运营商将网络的一部分专门用于为特定客户群提供特定功能。

如需了解详情,请参阅5G 网络切片

伴侣设备管理器配置文件

以 Android 12 及更高版本为目标平台的应用可以在连接到手表时使用伴侣设备配置文件。使用配置文件可以简化注册流程,方法是将设备类型特定的权限集捆绑到一个步骤中。

Screenshot of a phone showing a prompt offering to grant
permissions

捆绑的权限会在设备连接后授予伴侣应用,并且仅在设备关联期间持续有效。删除应用或移除关联会移除权限。

如需了解详情,请参阅伴侣设备配置文件

IMS 服务授权 (TS.43)

Android 12 包括对 TS.43 服务授权配置的支持,GSMA 规范定义了用于激活服务的授权验证步骤,这些服务包括 WLAN 通话 (VoWiFi)、LTE 通话 (VoLTE)、IP 短信 (SMSoIP)、eSIM 伴侣设备的设备上服务激活 (ODSA)(与请求设备关联)和流量套餐信息。

如需了解详情,请参阅IMS 服务授权

IMS 单一注册

Android 12 添加了对单一注册模型的支持,用于提供 MMTEL 和 RCS 功能。此模型允许设备通过设备 ImsService 提供的单一 IMS 注册来管理所有 IMS 功能。与在一个设备上管理多个 IMS 注册的双重注册模型相比,单一注册减少了运营商网络上的流量并提高了可靠性。

如需了解详情,请参阅IMS 单一注册

位置时区检测

Android 12 包括位置时区检测,这是一项可选的自动时区检测功能,允许设备使用其位置和时区地图数据来确定当前时区。

如需了解详情,请参阅位置时区检测

MAC 随机化

Android 12 引入了非持久性 MAC 随机化类型,这允许 Android 在每次连接开始时重新随机化某些网络的 MAC 地址。

如需了解详情,请参阅MAC 随机化行为

网络选择

Android 12 引入了一种使用 NetworkScore 类的新网络选择机制。网络选择会影响 Android 如何满足应用和系统网络请求,并影响如何选择应用的默认网络。

如需了解详情,请参阅网络选择

通知 CallStyle

从 Android 12 开始,我们建议应用对来电和正在进行的语音和视频通话使用新的通知样式 CallStyle。此通知样式包括用于接听、拒绝和挂断电话的操作按钮。它还使用与对话相同的以人为中心的样式,这与其将通话通知排在通知阴影顶部的行为是一致的。

为了使应用能够使用 CallStyle 通知样式,它们必须使用全屏 Intent 或前台服务(以及关联的权限)。此样式将通话通知排在通知阴影的顶部。对于正在进行的通话,此样式会向状态栏添加一个芯片,允许用户快速返回到通话应用。

如需了解详情,请参阅通话通知

Passpoint 更新

Android 12 引入了 Passpoint R3 和其他 Passpoint 功能,例如条款和条件、场所信息网址、带装饰的身份前缀以及即将进行的取消身份验证处理。

如需详细了解这些功能,请参阅Passpoint(热点 2.0)

快捷访问钱包更新

在 Android 12 或更高版本中,“快捷访问钱包”功能可从通知阴影中使用,而不是像 Android 11 中那样从电源菜单中使用。钱包界面现在在 System UI 中运行,位于 frameworks/base/packages/SystemUI/src/com/android/systemui/wallet 中。

如需了解详情,请参阅快捷访问钱包

简化的连接用户体验

Android 12 提供可选的简化连接体验,帮助用户更好地了解他们的网络连接、在互联网服务提供商之间切换以及排查网络连接问题。

如需了解详情,请参阅连接用户界面

时间源优先级

从 Android 12 开始,框架默认将网络时间协议 (NTP) 时间源的优先级设置为高于网络身份和时区 (NITZ) 源。

如需详细了解如何在设备上配置和测试时间源优先级,请参阅时间源优先级

禁用 2G 的开关

为了提高安全性,Android 12 在“设置”中引入了 2G 开关,允许用户完全禁用 2G 蜂窝网络连接。必须为该功能实现 Radio 1.6 HAL

默认情况下,2G 开关功能处于启用状态。运营商可以通过 CarrierConfig 标志 KEY_HIDE_ENABLE_2G 在运行时禁用该功能。

设备制造商必须确保在紧急呼叫期间所有网络都可用。

UICC 规范

在 Android 12 中,要运行 CTS 运营商 API 测试,设备需要使用具有 CTS 运营商权限的开发者 UICC,该 UICC 需满足第三方 GSMA TS.48 测试配置文件规范的最新版本中指定的各项要求。

如需了解详情,请参阅准备 UICC

Wi-Fi AP/AP 并发

Android 12 引入了 Wi-Fi AP/AP 并发功能,该功能允许设备启动桥接双频 (AP+AP) 热点。

如需了解详情,请参阅Wi-Fi AP/AP 并发

Wi-Fi/蜂窝网络共存信道规避

Android 12 引入了 Wi-Fi/蜂窝网络共存信道规避功能,该功能可在蜂窝网络信道之间存在干扰时识别并阻止使用不安全的 Wi-Fi 信道。这包括 STA、SoftAp、Wi-Fi Direct (P2P)、Wi-Fi Aware (NAN) 等接口。

Wi-Fi 安全协议增强功能

Android 12 引入了对 WPA3 Hash-to-Element (H2E)、WPA2/WPA3-Enterprise 过渡模式和过渡禁用指示的支持。

如需了解详情,请参阅WPA3 和 Wi-Fi Enhanced Open

Wi-Fi STA/STA 并发

Android 12 引入了 Wi-Fi STA/STA 并发功能,该功能允许设备同时连接到两个 Wi-Fi 网络。

如需了解详情,请参阅Wi-Fi STA/STA 并发

设备

Android 12 新增的汽车功能

请参阅汽车新增功能,详细了解这些新功能

显示

阻止不受信任的触摸事件

为了维护系统安全性和良好的用户体验,Android 12 增加了对阻止不受信任的触摸事件的支持。这可以防止应用在叠加层以不安全的方式遮挡应用时使用触摸事件

对话通知和小部件

Android 11 增加了对通过优先级和提醒级别自定义通知阴影上对话通知的行为和位置的支持,从而允许将对话标记为“重要”,并在对话空间中启动特定于对话的气泡。在 Android 11 功能的基础上,Android 12 对话小部件功能使用户能够为重要联系人向主屏幕添加对话小部件,从而允许他们轻松地恢复对话,而无需等待通知。

如需了解详情,请参阅对话通知和小部件

窗口模糊

Android 12 中提供了公共 API,用于实现窗口模糊效果(例如背景模糊和后方模糊)。借助这些 API,您可以模糊您自己的窗口后面的任何内容。您可以创建具有模糊背景的窗口,从而产生磨砂玻璃效果,或者显示整个屏幕在其后模糊的窗口,从而产生景深效果。您也可以将这两者结合起来。

如需详细了解这项新功能以及如何实现它,请参阅窗口模糊页面。

窗口放大

在 Android 12 中,弱视用户可以使用窗口放大功能放大显示屏上的任何内容。窗口放大功能允许用户放大屏幕的选定部分,这与在整个屏幕上使用缩放功能不同。选定的窗口可以在整个显示屏上拖动,这使他们能够根据需要放大屏幕的不同部分。

如需了解详情,请参阅窗口放大镜

企业

设备管理更新

Android 12 包括以下设备管理更新:

  • 托管配置文件数据隔离更新。在具有工作配置文件的个人设备上,Android 12 移除了对设备硬件标识符(IMEI、MEID、序列号)的访问权限,并提供了一个唯一的、特定于注册的 ID,用于标识特定组织的工作配置文件注册。如需了解详情,请参阅设备标识符

  • 设备配置更新。Android 12 包括对设备配置的多项更改。如需了解详情和更改列表,请参阅Android 12 更新

图形

Composer HAL 中的热插拔处理

在具有外部连接显示屏(通过 HDMI 或 DisplayPort)的设备(例如 Android TV 机顶盒 (STB) 和 OTT 设备)上,显示功能(例如显示模式和支持的 HDR 类型)可以动态更改。从 Android 12 开始,框架中的更改支持热插拔处理和动态显示功能。

如需了解详情,请参阅Composer HAL 中的热插拔处理

模块化系统组件

Android 13 包含多个新的和更新的模块化系统组件。新模块包括:

  • ART:此模块旨在通过为用户提供最新的托管运行时优化、功能和错误修复来改善 Android 体验。

  • 设备调度:此模块包含用于检测设备是否处于空闲状态的逻辑,并且可以在不中断用户的情况下重启。

现有模块的更新

  • adbd:更新了模块边界。

  • DocumentsUI:禁用了文件浏览。

  • ExtServices:添加了 DisplayHashingService 并更新了模块边界。

  • 媒体:添加了一个新的媒体组件。

  • NNAPI 运行时:更新了模块边界。

  • PermissionController:使 PermissionController 模块完全模块化,并更新了模块边界。

  • SDK 扩展:更新了模块职责并添加了一个新组件。

  • Statsd:更新了模块边界。

  • 网络共享:添加了功能,更新了模块边界。

  • 时区数据:更新了软件包格式。

  • Wi-Fi:更新了模块边界。

媒体

兼容的媒体转码

兼容的媒体转码允许设备对视频捕获使用现代、节省存储空间的媒体格式(例如 HEVC),同时保持与应用的兼容性。借助此功能,设备制造商可以默认使用 HEVC 而不是 AVC,从而在提高视频质量的同时减少存储和带宽需求。如需了解更多信息,请参阅兼容的媒体转码

性能

应用休眠

Android 12 提供了休眠用户数月不使用的应用的功能,类似于权限自动撤销。

如需了解更多信息,请参阅应用休眠

Cgroup 抽象层

Android 12 中的控制组 (cgroup) 抽象层引入了新功能,例如能够将特定的 cgroup 控制器定义为可选,以及使用新的 task_profiles 命令来替换已弃用的 writepid 命令。这种替换确保了当在 cgroup 层级结构中迁移任务时,底层 cgroup 实现对上层没有影响。Android 12 还引入了对每个 API 级别任务配置文件的支持。

如需了解更多信息,请参阅Cgroup 抽象层

权限

蓝牙权限

Android 12 引入了以下蓝牙权限,这些权限取代了 BLUETOOTHBLUETOOTH_ADMIN 权限

这些权限是新的 NEARBY_DEVICES 运行时权限组的一部分。此权限组支持诸如连接到智能手表之类的用例,而无需 LOCATION 运行时权限。

这些新权限与应用兼容,对于在 Android 11 或更低版本上运行的应用,无需进行任何更改。对于以 Android 11 或更低版本为目标的旧版应用,平台会自动将旧版蓝牙权限的请求转换为新权限的请求。当应用升级为以 Android 12 或更高版本为目标时,应用必须显式请求新的蓝牙权限。

如需了解有关使用这些权限的更多信息,请参阅蓝牙权限

隐私指示器

Android 12 通过在应用通过摄像头和麦克风应用操作权限使用私有数据源时显示指示器,为用户提供透明度。

应用操作会跟踪活动状态和各个 API 调用的数量,并与 Android 12 中的麦克风和摄像头指示器交互,以向用户显示应用何时访问了他们设备上的音频和摄像头数据。当用户点击麦克风或摄像头指示器时,他们会看到哪些应用访问了他们的数据。

此功能是所有 OEM 厂商的强制性要求。如需了解更多信息,请参阅隐私指示器

位置信息

从 Android 12 开始,用户可以请求应用在访问位置信息时仅获得大致精度

此更改旨在仅影响以 Android 12 或更高版本为目标平台的应用。但是,在具有旧版本 PermissionController 模块的设备上,此更改会影响所有应用,无论目标 SDK 版本如何。

运行时

Dexpreopt 和 <uses-library> 检查

Android 12 针对具有 <uses-library> 依赖项的 Java 模块的 DEX 文件 (dexpreopt) 的提前 (AOT) 编译进行了构建系统更改。在某些情况下,这些构建系统更改可能会破坏构建。

如需了解有关如何为中断做好准备以及修复和缓解中断的方法,请参阅Dexpreopt 和 <uses-library> 检查

测试

兼容性测试套件 (CTS)

对于 Android 12,CTS 引入了许多新的关键模块和测试更改。如需了解更多信息,请参阅CTS 发行说明

电视

HDMI-CEC 控制服务

Android 12 使用 HDMI-CEC 在设备唤醒或进入睡眠状态时自动控制 HDMI 连接的显示器。

如需了解更多详情,请参阅HDMI-CEC 控制服务

调谐器框架

在 Android 12 中

  • 带有 Tuner HAL 1.1 或更高版本的前端支持 DTMB 数字电视标准。支持以下前端功能和设置

    • DtmbFrontendCapabilities

    • DtmbFrontendSettings

  • Tuner SDK API 支持 Tuner HAL 1.1 中的新功能,它是 Tuner 1.0 的向后兼容版本升级。

  • android.media.tv.tuner.TunerVersionChecker.getTunerVersion() 检查正在运行的 HAL 版本。

更新

APEX 压缩

安装 Android Pony EXpress 容器 (APEX) 的更新后,不再使用其预安装版本,但仍占用相同数量的内存空间。占用的空间仍然不可用。在 Android 12 中,APEX 压缩通过在只读分区(例如 /system 分区)上使用高度压缩的 APEX 文件集,最大限度地减少了这种存储影响。如需了解有关 Android 12 中 APEX 压缩的信息,请参阅压缩的 APEX

恢复启动 (RoR) 安全性和便利性

Android 12 引入了增强的多客户端支持和基于服务器的重启功能。恢复启动 (RoR) 流程为用户提供了更高的安全性和便利性,因为 OTA 更新可以在设备空闲时进行,而 Android 12 多客户端和基于服务器的更新功能共同提供了设备硬件级别的类型安全性。

如需了解更多信息,请参阅恢复启动

通过 RoR 进行 SIM PIN 重放

Android 12 具有 SIM-PIN 重放功能,可在 RoR 启动的重启后实现无缝 PIN 码验证。每次用户成功启用、验证或修改 SIM PIN 时,都会对其进行重新加密和存储。

如需了解更多信息,请参阅SIM-PIN 重放

虚拟 A/B 更新

Android 12 提供了在快照分区上进行虚拟 A/B 压缩的选项。在 Android 12 中,可以将引导加载程序不使用的可更新分区进行快照以节省空间。这些分区也可以压缩。在 Android 12 的构建中启用快照压缩可以节省 /data 分区上的空间。

使用快照压缩实现虚拟 A/B 需要更改特定于设备的代码。请参阅虚拟 A/B 概述实现虚拟 A/B 页面上的更改和实现详情。