Google 致力于为黑人社区推动种族平等。查看具体举措

Android 12 和 Android 12 发行说明

本页总结了 Android 12 和 Android 12 版本的主要功能,并提供了更多信息的链接。这些功能摘要是根据此站点上功能的文档位置组织的。

建筑学

AlwaysOnHotwordDetector 类更新

从 Android 12 开始,包括其工厂方法android.service.voice.VoiceInteractionService.createAlwaysOnHotwordDetector()AlwaysOnHotwordDetector 类是系统 API ( @SystemApi ),而不是公共 API。 AlwaysOnHotwordDetector类旨在供具有系统级权限的助手应用程序使用,这些权限通常与操作系统版本捆绑在一起。在 Android 11 及更低版本中,API 受到检查的保护,以确保调用者是当前处于活动状态的 Google 助理应用,从而使其他第三方应用无法使用该 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 Introduction中的新 Android Rust 部分。

引导映像头

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

要了解更多信息,请参阅引导映像标题页面。

对实现 bootconfig 的更改

Android 12 中的 bootconfig 功能是一种将配置详细信息从构建和引导加载程序传递到 Android 12 的机制,它取代了用于 Android 11 及更低版本的androidboot.*内核命令行选项。此功能提供了一种将 Android 用户空间的配置参数与内核的配置参数分开的方法。

要了解更多信息,请访问实施 Bootconfig

自定义字体回退

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

有关此新功能的信息,请参阅实施自定义字体回退。

DMA-BUF 堆

在 Android 12 中,GKI 2.0将 ION 分配器替换为 DMA-BUF 堆

启用区域设置过滤器

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

有关更多信息,请参阅启用区域设置过滤器

刷新供应商 ramdisk

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

有关更多信息,请参阅用户空间中的快速启动页面上的刷新供应商 ramdisk

GKI 版本控制

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

有关详细信息,请参阅GKI 版本控制

MM events-历史内存统计

在 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 T 开始,所有 HAL 更改都必须使用稳定的 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 ,以便查询设备是否支持扩展。

有关更多信息,请参阅在设备上设置供应商库

四拜耳相机传感器支持

Android 12 引入了平台 API,让应用可以利用具有超高分辨率摄像头传感器的设备,这些摄像头传感器通常具有四边或非拜耳模式,可在图像质量和低光性能方面提供灵活性。新的 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 Service Entitlement Configuration的支持,这是一种 GSMA 规范,定义了用于激活服务的权利验证步骤,包括 Voice-over-Wi-Fi (VoWiFi)、Voice-over-LTE (VoLTE)、SMS over 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 如何满足应用和系统网络请求,并影响如何选择应用的默认网络。

有关详细信息,请参阅网络选择

通知调用样式

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

对于使用CallStyle通知样式的应用程序,它们必须使用全屏意图或前台服务(具有关联的权限)。这种风格将呼叫通知排在阴影顶部。对于正在进行状态的通话,这种风格会在状态栏上添加一个芯片,让用户可以快速返回到通话的应用程序。

有关详细信息,请参阅呼叫通知

通行证更新

Android 12 引入了 Passpoint R3 和其他 Passpoint 功能,例如条款和条件、场地信息 URL、修饰的身份前缀和取消身份验证即将处理。

有关这些功能的更多信息,请参阅Passpoint (Hotspot 2.0)

快速访问钱包更新

在 Android 12 或更高版本中,快速访问钱包功能可从阴影中获得,而不是像 Android 11 中那样从电源菜单中获得。钱包 UI 现在在系统 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,满足最新版本的第三方 GSMA TS.48 测试配置文件规范中规定的要求。

有关详细信息,请参阅准备 UICC

Wi-Fi AP/AP并发

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

有关详细信息,请参阅Wi-Fi AP/AP 并发

Wi-Fi/蜂窝 coex 信道避免

Android 12 引入了Wi-Fi/蜂窝 coex 通道避免功能,该功能可在蜂窝通道之间存在干扰时识别并防止使用不安全的 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 增强开放

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,您可以模糊自己窗口后面的任何内容。您可以创建背景模糊的窗口,创建磨砂玻璃效果,或显示窗口,使其后面的整个屏幕模糊,创建景深效果。您也可以将这两者结合起来。

有关此新功能以及如何实现它的更多信息,请参阅Window Blurs页面。

窗口放大

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

有关详细信息,请参阅窗口放大镜

企业

设备管理更新

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

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

  • 设备配置更新。 Android 12 对设备配置进行了多项更改。有关详细信息和更改列表,请参阅Android 12 更新

图形

Composer HAL 中的热插拔处理

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

有关详细信息,请参阅Composer HAL 中的热插拔处理

模块化系统组件

主线模块更新

Android 12 引入了两个新模块, ARTDevice Scheduling

许多现有模块在Android 12 中进行了更新。有关详细信息,请参阅 Android 12 中的更新

艺术

Android 12 或更高版本支持ART模块,该模块旨在通过为用户提供最新的托管运行时优化、功能和错误修复来改善 Android 体验。

设备调度

Android 12 或更高版本支持设备调度模块,该模块包含检测设备是否处于空闲状态的逻辑,并且可以在不中断用户的情况下重新启动。

媒体

兼容媒体转码

兼容的媒体转码允许设备使用现代、存储高效的媒体格式进行视频捕获,例如 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 会显示指示器,从而为用户提供透明度。

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

此功能对于所有 OEM 都是强制性的。有关详细信息,请参阅隐私指标

地点

从 Android 12 开始,用户可以要求应用在访问位置信息时仅获得近似准确度

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

运行

Dexpreopt 和 <uses-library> 检查

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

有关如何准备损坏以及修复和减轻损坏的方法的信息,请参阅Deexpreopt 和 <uses-library> 检查

测试

兼容性测试套件 (CTS)

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

电视

HDMI-CEC控制服务

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

有关详细信息,请参阅HDMI-CEC 控制服务

调谐器框架

在安卓 12 中:

  • Tuner HAL 1.1 或更高版本的前端支持 DTMB DTV 标准。支持以下前端功能和设置:

    • DtmbFrontendCapabilities

    • DtmbFrontendSettings

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

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

更新

顶点压缩

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

Resume-on-Reboot 安全性和便利性

Android 12 引入了增强的多客户端支持和基于服务器的重启功能。 resume-on-reboot (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页面上的更改和实施详细信息。