Android 12 版本说明

本页总结了 Android 12 版本中的主要功能,并提供了其他信息的链接。根据各个功能的介绍文档在本网站上的位置,整理了以下功能摘要。

架构

AlwaysOnHotwordDetector 类更新

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

此外,Android 12 包含声音触发器功能方面的增强功能,可以通过声音触发器 API 改善与使用麦克风相关的权限归因和执行。麦克风的使用(包括间接使用,例如通过 SoundTriggerManagerAlwaysOnHotwordDetector 类使用)将归因于调用 AlwaysOnHotwordDetector 类的源软件包(Google 助理应用)。这可以增强用户隐私保护并提高使用麦克风的软件包的透明度。在 Android 11 及更低版本中,麦克风的使用归因于系统用户,因为源软件包并不直接使用声音触发器 API,而是通过位于 system_server 进程中更高级别的服务使用麦克风。

这些变更的影响如下:

  • 使用 AlwaysOnHotwordDetector 类的非系统应用无法基于 Android 12 API 进行编译,因为该 API 已从公开 Surface 中移除。
  • 系统可能会拒绝使用 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 架构的设备必须执行的检查。

如需了解详情,请参阅启动映像头文件页面。

bootconfig 实现方面的变更

Android 12 中的 bootconfig 功能是一种将配置详细信息从 build 和引导加载程序传递给 Android 12 的机制,它取代了用于 Android 11 及更低版本的 androidboot.* 内核 cmdline 选项。此功能可用于将 Android 用户空间的配置参数与内核的配置参数分离开。

如需了解详情,请访问实现 Bootconfig

自定义后备字体

在 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 设置过滤器属性值和默认语言,并且无需将过滤器烘焙 (bake) 到系统映像中即可配置限制。

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

刷写供应商 ramdisk

Android 12 开始支持通过 fastboot 命令从设备中提取整个 vendor_boot 映像,从而刷写供应商 ramdisk。该命令会提示主机端 fastboot 工具读取供应商启动头文件、重置映像并刷写新映像。这包括对引导加载程序和 fastbootd 变更的支持,用于获取分区大小和偏移等必要数据。

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

GKI 版本控制

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

如需更多详细信息,请参阅 GKI 版本控制

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

在发布时搭载 Android 12 的设备可以使用 mm_events,这是一组在系统遇到内存压力时定期捕获的内存相关统计信息。mm_eventsperfetto 跟踪机制集成,尽量避免增加性能开销。统计信息的收集在一段时间内(此时间可配置)保持活跃状态,定期捕获统计信息。

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

系统提醒窗口的限制

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

在 Android 12 中,系统不会向预安装应用自动授予 SYSTEM_ALERT_WINDOW 应用操作权限。此权限必须由用户明确授予后才能供预安装应用使用。系统应用仍会默认获得该权限。

第三方应用可以选择不在其上绘制应用叠加层。这提供了一种防范 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 变更都必须使用稳定的 AIDL。为了准备和加强未来对此 AIDL 的采用,Android 12 中对音频 HAL 版本 7 做出了重大变更。

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

相机

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

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

有关详情,请参见 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 及更高版本为目标平台的应用在连接到手表时可以使用配套设备配置文件。使用配置文件可将一组设备类型专用权限的授予操作捆绑在一个步骤中,从而简化注册过程。

手机的屏幕截图,显示了请求授予权限的提示

设备连接后就会向配套应用授予捆绑的权限,且这些权限仅在设备关联时持续有效。删除应用或移除关联时会移除权限。

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

IMS 服务授权 (TS.43)

Android 12 支持 TS.43 服务授权配置,这是一项 GSMA 规范,用于定义激活服务的授权验证步骤,这些服务包括 Wi-Fi 语音通话 (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 中那样通过电源菜单使用。电子钱包界面现在是在系统界面中运行,位于 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 直连(点对点)、Wi-Fi 感知 (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 新增的汽车功能

如需详细了解这些新功能,请参阅 Automotive 的新变化

显示

屏蔽不受信任的触摸操作

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

对话通知和对话微件

Android 11 开始支持按优先级和提醒级别自定义对话通知的行为及其在通知栏中的位置,允许将对话标记为“重要”以及在对话空间中启动对话专用的对话泡。Android 12“对话微件”功能基于这些 Android 11 功能构建,使用户能够将重要联系人的对话微件添加到主屏幕,让他们无需等待通知即可轻松恢复对话。

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

窗口模糊处理

Android 12 中提供了一些公共 API,用于实现窗口模糊处理效果(例如背景模糊处理和模糊处理后方屏幕)。借助这些 API,您可以对自己窗口后的内容进行模糊处理。您可以在创建窗口时对背景进行模糊处理,制造一种磨砂玻璃效果,也可以在显示窗口时对其后的整个屏幕进行模糊处理,制造一种景深效果。您还可以结合使用这两种效果。

如需详细了解此新功能及其实现方式,请参阅窗口模糊处理页面。

窗口放大功能

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

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

企业

设备管理更新

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

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

  • 设备配置更新:Android 12 对设备配置进行了多项更改。如需了解详情并查看变更列表,请参阅 Android 12 更新

图形

混合渲染器 HAL 中的热插拔处理

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

如需了解详情,请参阅混合渲染器 HAL 中的热插拔处理

模块化系统组件

Android 13 包含几个新增的和经过更新的模块化系统组件。新增模块包括:

  • ART:此模块旨在通过向用户提供最新的托管式运行时优化、功能和 bug 修复,提升 Android 使用体验。

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

对现有模块的更新:

媒体

兼容的媒体转码

兼容的媒体转码功能使设备能够使用更加新式、存储效率更高的媒体格式(例如 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 会显示指示标志,从而使用户知晓这一点。

在 Android 12 中,应用操作会跟踪 activity 状态和单个 API 调用的次数,并与麦克风和摄像头指示标志交互,从而在应用访问用户设备上的音频和摄像头数据时提醒用户。当用户点击麦克风或摄像头指示标志时,他们会看到哪些应用访问过其数据。

所有 OEM 都必须启用此功能。如需了解详情,请参阅隐私指示标志

位置信息

从 Android 12 开始,当应用访问位置信息时,用户可以要求应用仅获取大致位置信息

此变更仅用于影响以 Android 12 或更高版本为目标平台的应用。不过,在具有旧版 PermissionController 模块的设备上,此更改会影响所有应用,而不论目标 SDK 版本是什么。

运行时

Dexpreopt 和 <uses-library> 检查

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

如需了解如何针对这些破坏做好准备以及修复和缓解这些破坏的方法,请参阅 Dexpreopt 和 <uses-library> 检查

测试

兼容性测试套件 (CTS)

Android 12 针对 CTS 引入了许多新的关键模块和测试更改。如需了解详情,请参阅 CTS 版本说明

TV

HDMI-CEC 控制服务

Android 12 使用 HDMI-CEC 在设备唤醒或进入休眠状态时自动控制 HDMI 连接的屏幕。

如需更多详细信息,请参阅 HDMI-CEC 控制服务

调谐器框架

在 Android 12 中:

  • 使用调谐器 HAL 1.1 或更高版本的前端支持 DTMB DTV 标准。支持的前端功能和设置如下所示:

    • DtmbFrontendCapabilities

    • DtmbFrontendSettings

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

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

更新

APEX 文件压缩功能

安装 Android Pony EXpress (APEX) 容器更新后,其预安装版本不会再使用,但占用的内存空间量不变。被占用的空间仍然不可用。在 Android 12 中,APEX 文件压缩功能在只读分区(例如 /system 分区)中使用一组经过高度压缩的 APEX 文件,最大限度地降低了对存储空间的这种影响。如需了解 Android 12 中的 APEX 文件压缩功能,请参阅经过压缩的 APEX

“重新启动时恢复”的安全性和便利性

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

如需了解详情,请参阅重新启动时恢复

通过 RoR 回顾 SIM 卡 PIN 码

Android 12 具有 SIM 卡 PIN 码回顾功能,可在 RoR 发起的重新启动后进行无缝 PIN 码验证。每次用户成功启用、验证或修改 SIM 卡 PIN 码后,系统都会重新加密并存储 SIM 卡 PIN 码。

如需了解详情,请参阅 SIM 卡 PIN 码回顾

虚拟 A/B 更新

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

实现采用快照压缩的虚拟 A/B 需要更改设备专属代码。如需了解这些变更和实现详情,请参阅虚拟 A/B 概览实现虚拟 A/B 页面。