本页总结了 Android 11 版本中的主要功能,并提供指向其他信息的链接。这些功能摘要根据功能在本网站上的文档位置进行组织。
架构
API 配额
Android 11 版本引入了 API 配额功能,该功能限制了应用调用某些 API 的频率。它仅在 JobScheduler
API 调用中实现。您对预设限制所做的任何更改仍必须通过 CTS 测试。您可以使用 QuotaTracker.java
中的 setEnabled
方法禁用和启用 API 配额。默认情况下已启用。禁用该功能后,应用可以不受限制地调用受影响的 API。
提供了 QuotaTracker
和相关类的单元测试。详细文档位于 QuotaTracker
类中的注释中。此功能引入了新的 LimitExceededException
公共 API。
引导加载程序
启动标头版本 3
Android 11 支持启动标头版本 3。有关详细信息,请参阅 启动镜像标头。
分区
启动分区
Android 11 引入了通用内核映像的概念。为了能够使用通用内核映像启动任何设备,所有供应商特定的信息都从启动分区中分离出来,并重新定位到 供应商启动分区。使用 Android 11 启动的设备必须支持供应商启动分区和更新的启动分区格式,才能通过 GKI 测试。
供应商启动标头
供应商启动标头可以超过一页。
产品分区接口强制执行
Android 11 解绑了 product
分区,使其独立于 system
和供应商分区。作为这些更改的一部分,您现在可以控制产品分区对原生和 Java 接口的访问。
恢复镜像
Android 11 更新了恢复镜像要求,并包含新的基于版本的选项,用于将恢复 DTBO/ACPIO 作为启动/恢复镜像的一部分包含在内。有关详细信息,请参阅 恢复镜像。
软重启
Android 11 支持 软重启,即用户空间中进程的运行时重启,用于应用需要重启的更新(例如,APEX 包的更新)。
内核
Android 通用内核
Android 11 对 Android 通用内核的开发和集成方式进行了重大更改。
Android 内核 ABI 监控
Android 11 引入了 ABI 监控工具,以稳定 Android 内核的内核内 ABI。
通用内核映像
Android 11 引入了 通用内核映像 (GKI),它通过统一核心内核并将 SoC 和板级支持从核心内核移出到可加载模块中来解决内核碎片化问题。
模块化内核
内核模块支持
通用内核映像 (GKI) 可能不包含启用设备挂载分区所需的驱动程序支持。为了使设备能够挂载分区并继续启动,第一阶段 init
得到增强,可以 加载 ramdisk 上存在的内核模块。ramdisk 分为通用 ramdisk 和供应商 ramdisk。供应商内核模块存储在供应商 ramdisk 中。内核模块的加载顺序是可配置的。
DebugFS
Android 11 取消了平台对 DebugFS 的支持,并要求不在生产设备上挂载或访问它。虽然 DebugFS 是为调试目的而创建的,但它已包含在用户和 usedebug 构建中,用于通用和供应商特定的组件。DebugFS 正在被弃用,因为它会创建
不稳定且未记录的 API。Android 依赖于定义明确且稳定的 Linux 内核接口和 HAL 才能正常运行。VTS 测试强制执行这些接口的存在和正确性。DebugFS 无法强制执行,因为它的 ABI 既不稳定也没有文档记录。
代码质量差。因为它们是用于调试的,添加到
debugfs
的节点没有像其他文件系统中的节点那样经过严格的审查和测试。当在debugfs
中发现错误时,它们被视为优先级较低,这会导致源自debugfs
的安全漏洞。安全漏洞。DebugFS 的创建目的是帮助内核开发人员调试系统,而不是专注于安全性。没有有效的方法来验证生产设备上暴露的所有 DebugFS 节点是否安全。尽管 SEpolicy 收紧降低了源自
debugfs
的安全漏洞的严重性,但禁止挂载debugfs
是彻底消除攻击面的唯一方法。
在 Android 11 中,VTS 强制执行 CONFIG_DEBUG_FS
未在设备的内核配置中启用,并且 debugfs
未在 /proc/filesystems
下列出。
GKI 的 ION 堆
在 Android 11 中,Android 通用内核 v5.4 引入了一个框架,用于 模块化供应商特定的 ION 堆,同时保持内置的核心 ION 驱动程序,使 OEM 在使用通用内核映像 (GKI) 时能够保留 ION 内核驱动程序修改。
模块化系统组件
自动撤销权限
在 Android 11 中,PermissionsController 模块可以自动撤销长时间未使用的应用的运行时权限。
Mainline 模块更新
Android 11 引入了 几个新的模块,并更新了 Android 10 中引入的几个现有模块。
运行时资源叠加
Android 11 或更高版本支持 RRO 的新机制。增强功能包括:保留的资源 ID 空间、用于枚举目标资源的 res/xml/overlays.xml
文件、叠加层的 Soong 构建规则、用于配置叠加层的可变性、默认状态和优先级的 OverlayConfig
文件。
供应商 NDK
供应商快照
Android 11 支持 VNDK 快照构建工件 和 供应商快照,您可以使用它们来构建 vendor.img
,而无需考虑源树上的 Android 版本。这支持镜像的混合版本,例如旧版本的供应商镜像和新版本的系统镜像。
音频
从 FM 调谐器捕获音频需要特许权限
在 Android 11 中,音频源 MediaRecorder.AudioSource.RADIO_TUNER
可见为 @SystemApi,并且当使用 AudioRecord
或 MediaRecorder
捕获音频时,使用它需要特许权限 android.permission.CAPTURE_AUDIO_OUTPUT
音频效果
从 Android 11 开始,设备制造商能够 自动附加和启用特定的音频效果,当为音频捕获或播放选择给定音频设备时。
设备类型限制
在 Android 11 中,我们 取消了 音频设备类型数量的限制,以允许添加新的音频设备类型。
实现
音频实现
Android 11 具有 比更低版本更严格的声音触发 HAL 实现的运行时强制执行。
汽车
版本详情
要了解有关新的汽车功能和增强功能的更多信息,请参阅 汽车版本详情。
USB 端口重置 API
设备制造商可以 在 Android 11 中实现 USB 端口重置 API,以重置与连接主机的 USB gadget 连接。
相机
相机散景
从 Android 11 开始,Android 平台支持 相机散景实现,并提供 API 以使第三方应用可以使用散景功能。
相机缩放
在 Android 11 中,应用可以 通过 ANDROID_CONTROL_ZOOM_RATIO
设置使用相机的缩放(数字和光学)。此设置是一个浮点因子,与使用 ANDROID_SCALER_CROP_REGION
设置的整数值相比,它可以实现更高的缩放精度,并且允许缩小 (< 1.0f)。
并发相机流式传输
从 Android 11 开始,Camera2 API 包含 应用可以调用的方法,以确定相机是否支持并发流式传输以及支持哪些流配置。
改进了 Android 虚拟设备的相机支持
Android 11 在 Cuttlefish 和 Android 模拟器 虚拟设备上引入了经过改进的模拟相机 HAL 实现,该实现增加了对更多相机功能的支持,包括
- RAW 捕获
- YUV 重新处理
- Level 3 设备
- 逻辑相机支持
- 仅深度相机支持
可以在 /platform/hardware/google/camera/devices/EmulatedCamera/hwl
找到此模拟相机 HAL。
多相机最佳实践
为了充分利用多相机启用的功能,同时保持应用兼容性,在实现逻辑多相机设备时,请遵循这些 最佳实践。这包括有关使用 Android 11 中引入的 ANDROID_CONTROL_ZOOM_RATIO
API 的最佳实践。
系统相机
Android 11 通过 android.permission.SYSTEM_CAMERA
权限引入了对 系统相机的支持。系统相机允许您实现可在特权应用或系统应用上使用但第三方公共应用无法使用的相机功能。
兼容性
Android 11 兼容性定义文档 在 先前版本的基础上进行了迭代,更新了新功能并更改了先前发布的功能的要求。
连接
蓝牙和 NFC
NFC 离线主机支付同步
Android 支持使用安全元件进行 NFC 卡模拟,以进行离线主机卡模拟,但 Tap & pay 设置中指定的首选支付服务可能未与安全元件中的应用同步。
Android 11 通过 离线主机支付同步解决了此问题,这是一种使您能够同步 Tap & pay 中的支付配置、非接触式前端 (CLF) 上的路由配置以及安全元件中的应用选择状态的机制。
快速访问钱包
快速访问钱包功能允许用户直接从电源菜单访问支付卡和相关通行证。
通话和消息
紧急呼叫行为
Android 11 引入了对紧急呼叫处理方式的更改,以更好地支持运营商要求。下面介绍了处理紧急呼叫的行为
- 当用户在正在进行的通话中拨打紧急呼叫时,根据
KEY_ALLOW_HOLD_CALL_DURING_EMERGENCY_BOOL
键的设置方式,设备会自动断开正在进行的通话,或将正在进行的通话置于保持状态,并禁止切换回正在进行的通话,直到紧急呼叫断开。 - 在紧急呼叫期间,来电会自动被拒绝,并向用户显示为未接来电。在紧急呼叫处于活动状态时,无法拨打非紧急呼叫。
- 在紧急回拨模式下,拨打非紧急呼叫会导致设备退出紧急回拨模式。如果拨打了紧急呼叫,设备会在呼叫结束时重新进入紧急回拨模式。来电不会导致设备退出紧急回拨模式。
- 活动紧急呼叫无法交换或保持。
可更新的紧急号码数据库
Android 11 引入了一个 紧急号码数据库,该数据库可以通过 OTA 更新进行更新。该数据库包含紧急电话号码列表,其中包含相应的国家/地区和服务类别。
运营商
eSIM
通过运营商应用进行的 eSIM 激活流程
Android 11 改进了通过运营商应用激活 eSIM 配置文件的过程。当使用激活码下载配置文件时,LPA 可以启动运营商应用的用户界面,以从用户处检索更多信息。运营商应用还可以启动 LUI 以激活 eSIM 配置文件。
有关更多信息,请参阅
eUICC API 错误处理
Android 11 引入了 额外的键和值,以改进错误处理,从而允许 eUICC API 的调用者单独处理特定错误。
擦除订阅方法的选项参数
从 Android 11 开始,当在 EuiccManager
中使用 eraseSubscriptions
方法时,您应该提供一个 EuiccCardManager#ResetOption
枚举值,以指定是擦除所有测试订阅、运营订阅还是两种类型的订阅。
多运营商网络支持
使用 Android 11 启动的设备可以 提供对多个公共陆地移动网络 (PLMN) 的支持。多 PLMN 支持通过允许移动网络运营商 (MNO) 广播多个身份来提供灵活性。
小型蜂窝支持
使用 Android 11 启动的设备可以 通过小区识别 API 中的方法提供对封闭用户组 (CSG) 的支持,这些方法可以获取有关小区 CSG 信息的信息。这对于通过封闭用户组管理小型蜂窝的移动网络运营商 (MNO) 非常有用。
连接诊断 API
连接诊断 API 允许拥有或管理网络的应用(例如运营商应用、VPN 应用和 Wi-Fi 建议应用)从框架接收诊断网络连接信息。
开放移动 API 更改
Android 11 为开放移动 API (OMAPI) 引入了其他功能
- 运营商特权的解析规则。
自定义嵌入式安全元件 (eSE) 访问或使用以下一项或多项配置 eSE
- SECURE_ELEMENT_PRIVILEGED_OPERATION 系统特许权限
- 可配置的访问规则应用程序主 (ARA-M) 应用标识符 (AID)
reset
用于重置 OMAPI 读取器的系统 API
为读取器提供清晰的指示,以便应用过滤设备功能。
信号强度报告
在 Android 11 中,您可以 选择和自定义多个信号测量类型,供框架用于报告 4G LTE 和 5G NR 无线接入网络 (RAN) 的信号强度。然后,您可以使用报告的信号强度来控制信号条在设备上的显示方式。
Wi-Fi
运营商 Wi-Fi 网络配置
在 Android 11 中,您可以使用 Wi-Fi 建议 API 添加运营商 Wi-Fi 网络配置,而不是在运营商配置管理器中配置 carrier_wifi_string_array
参数。
用于网络共享的 Wi-Fi 热点(软 AP)支持
Android 11 引入了 改进的 Wi-Fi 热点(软 AP)配置,为运营商用例和自定义提供了更多支持。这些更改使设备制造商能够配置以下内容
- SSID 和 BSSID
- 安全类型(包括 WPA3)
- 隐藏 SSID
- 工作频段和信道(包括 ACS)
- 允许的最大客户端数
- 自动关机超时值
- 允许列表和阻止列表,以允许用户控制关联的设备
Wi-Fi 网络选择增强功能
Android 11 引入了 Wi-Fi 网络选择的增强功能,以改善 Wi-Fi 网络连接。
Wi-Fi Passpoint 增强功能
Android 11 为 Passpoint 功能引入了以下增强功能
- 配置文件过期支持,允许系统通知用户并强制执行配置文件过期日期。这需要一个使用
SubscriptionParameters/ExpirationDate
字段初始化的配置文件。 - 支持 Passpoint R1 配置文件的私有、自签名 CA 证书。
- 支持不带 CA 证书的 Passpoint R1 配置文件。系统使用默认信任存储来验证连接。
- 支持将命名的 AAA 域与 ANQP FQDN 分开配置(使用 PPS-MO 中的
Extension/Android
节点)。这使您可以指定与已公布域不同的 AAA 域,而不会损害连接安全性。 - 支持具有相同 FQDN 的多个已安装 Passpoint 配置。这对于在其网络上部署多个移动国家/地区代码 (MCC) 和移动网络代码 (MNC) 组合但只有一个 FQDN 的运营商非常有用。
- 能够检测和接受 Passpoint R3 接入点。
- 改进的网络匹配
- 支持
HomeSP/HomeOIList
的家庭提供商匹配。 - 支持
HomeSP/OtherHomePartners
的家庭提供商匹配。 - 取消 Passpoint 规范不需要的 EAP 方法匹配要求。
- 支持
Wi-Fi 配置文件改进了通用名称支持
在 Android 11 中,当运营商的根证书颁发机构 (CA) 更改时,Wi-Fi 配置文件仍然有效,如果通用名称在可选的 Android
扩展子树中指定。在以前的版本中,如果根 CA 更改,用户必须从运营商处下载新配置文件。
数据
数据访问审核
Android 11 引入了数据访问审核,允许应用开发者更好地识别他们的应用和依赖项如何访问用户的私有数据(例如位置和相机数据)。对于复杂的多用途应用,开发者可以定义归因标记来识别应用的不同部分。
有关更多信息,请参阅 数据访问审核。
显示
气泡通知 API 更新
Android 10 引入了 气泡通知 API,使用户可以从设备上的任何位置进行多任务处理。Android 11 包含多项气泡增强功能。最值得注意的更改是将气泡默认设置为开启,并将设置移出开发者选项。无需在 Android 平台中实现气泡。
设备控件
设备控件功能从 Android 11 开始提供,允许用户从电源菜单快速查看和控制外部设备,例如灯、恒温器和摄像头。设备聚合器(例如,Google Home)和第三方供应商应用可以在此空间中提供设备以供显示。无需平台实现工作来支持此功能。默认实现包含在 AOSP System UI 中。有关向您的控制应用添加设备控件支持的信息,请参阅 控制外部设备 Android 开发者页面。
文本分类器更新
Android 11 引入了 文本分类器服务的可更新默认实现,该实现位于 ExtServices Mainline 模块中。建议设备制造商使用 TextClassifierService
的此实现,因为它可以通过 Mainline OTA 更新进行更新。
企业
实现自定义用户类型
Android 11 引入了定义明确的用户类型的概念,代表 Android 多用户功能允许的所有不同类型的用户。借助此功能,OEM 可以自定义预定义的 AOSP 用户类型并定义新的配置文件类型。有关更多信息,请参阅有关 用户类型的部分。
工作资料改进
Android 11 包含针对工作资料的隐私和可用性增强功能,旨在解决关键的可用性挑战。至关重要的是,这些改进在整个生态系统中得到一致实施。
支持 Android 的 IT 管理员必须支持用户带到工作的任何 Android 设备上的体验。提高关键工作流程的 UX 一致性可以显着降低在 BYOD 环境中支持 Android 的成本。跨设备一致地实施隐私功能还可以提高用户信心。一些更新包括
- 应用列表具有单独的选项卡,分别标记为“个人”和“工作”。
- “工作”选项卡具有一个用于关闭工作资料的开关。
- 当工作资料关闭时,工作应用图标变为灰色,并且“工作”选项卡上的叠加层显示“工作应用已暂停”。
互动
Context Hub 运行时环境更新
Android 11 引入了 CHRE API v1.4,其中包括对 5G 小区信息、nanoapp 调试转储和其他改进的支持。它还包括支持在 nanoapp 中使用 TensorFlow Lite for Microcontrollers。有关更多信息,请参阅 Context Hub 运行时环境 (CHRE)。
触感反馈
Android 11 包含一个关于 在您的设备上实现触感反馈和评估触感反馈性能的新指南。
输入
游戏手柄
Android 11 增加了对第三方游戏控制器的支持,包括
Nintendo Switch Pro 控制器:Android 增加了对 Nintendo Switch Pro 控制器的 USB 和蓝牙连接的支持。CTS 测试 是所有实现都需要的,请使用
NintendoSwitchProTest
来验证您的实现。Steam 控制器:Android 增加了对 Steam 控制器的 USB 连接支持。
神经网络
最佳实践
为了鼓励应用开发者采用 NNAPI,在运行 Android 11 的设备上实现 NNAPI 驱动程序时,请遵循这些 最佳实践。
控制流
在 Android 11 中,NNAPI 添加了两个控制流操作,IF
和 WHILE
,它们将其他模型作为参数,并有条件地 (IF
) 或重复地 (WHILE
) 执行它们。这允许构建基于输入值执行不同操作或多次执行操作而无需展开的模型。
围栏执行
在 Android 11 中,NNAPI 允许执行等待 sync_fence
句柄列表,并可选择返回一个 sync_fence
对象,该对象在执行完成时发出信号。这减少了小型序列模型和流式传输用例的开销。围栏执行还允许与其他可以发出信号或等待 sync_fence
的组件进行更高效的互操作。
内存域
对于运行 Android 11 或更高版本的设备,NNAPI 支持 内存域,这些内存域为驱动程序管理的缓冲区提供分配器接口。这允许跨执行传递设备原生内存,从而抑制同一驱动程序上连续执行之间不必要的数据复制和转换。
服务质量
从 Android 11 开始,NNAPI 通过允许应用指示其模型的相对优先级、模型准备所需的最长时间以及执行完成所需的最长时间,来提供 改进的服务质量 (QoS)。
有符号 8 位量化
Android 11 中引入的神经网络 HAL (NN HAL) 1.3,支持神经网络 API 的有符号 8 位量化。有关更多信息,请参阅 Android 11 中的 NN HAL 更新。
测试改进
Android 11 包含一个测试实用程序,用于对 NNAPI 驱动程序实现执行模糊测试,以及一系列崩溃测试,以验证驱动程序在重负载条件下的弹性。
有关更多信息,请参阅
传感器
铰链角度传感器类型
Android 11 引入了 铰链角度传感器类型,以表示测量设备两个组成部分之间角度的传感器。
传感器 Multi-HAL 2.1
传感器 Multi-HAL 2.1 在 Android 11 上可用,是传感器 Multi-HAL 2.0 的迭代版本,它支持加载可以公开 铰链角度传感器类型的子 HAL。为了支持此传感器类型,子 HAL 必须使用 2.1 SubHal 标头中定义的子 HAL API。
媒体
DRM
Android 11 通过删除 MediaDrmService 简化了 MediaDrm/Crypto IPC 路径。添加了一个新的 MediaDrm
API 来枚举可用的 DRM 插件。
MediaCodec 中的低延迟解码
Android 11 包含 MediaCodec 2.0,以实现低延迟的媒体解码,这对于实时应用至关重要。
其他
更新 AOSP Gallery 应用要求
从 Android 11 开始,不再要求 AOSP Gallery 应用支持 application/sdp
MIME 类型用于 ACTION_VIEW
intent。application/sdp
MIME 类型的 ACTION_VIEW
intent 过滤器已从 AOSP Gallery 应用清单文件中删除。
这些要求记录在 CDD 的3.2.3.1. 核心应用 Intent 部分中。
性能
用户空间 lmkd
Android 11 引入了一种 新的终止策略,以防止内存饥饿和性能下降。
电源
电视待机的非专注睡眠
在 Android 11 中,为 电视待机添加了一项名为非专注睡眠的新功能。这是一种省电功能,允许在用户不活动超时后设置设备进入睡眠状态,即使持有唤醒锁也是如此。
安全
OEMCrypto
Android 11 支持 OEMCrypto API 版本 16。
存储
分区存储
Android 11 支持 分区存储,它限制了应用对外部存储的访问。此外,MediaProvider 成为外部存储的文件系统处理程序 (for FUSE),使外部存储上的文件系统和 MediaProvider 数据库保持一致。
SDCardFS 弃用
SDCardFS 支持在 Android 11 中已弃用。VTS 测试不允许列为 SDCardFS 的已挂载文件系统。SDCardFS 的功能已由其他方法取代。
测试
兼容性测试套件 (CTS)
对于 Android 11,CTS 引入了许多新的关键模块和测试更改。有关更多信息,请参阅 CTS 发行说明。
APEX 管理 API 的 CTS 测试
从 Android 11 开始,CtsShimApex
包包含两个预构建的应用,CTS 使用它们来测试特权和权限。
如果您的设备不支持 APEX 包管理,或者设备运行的是版本 10 或更低版本,则必须在系统中单独预安装这两个预构建的应用。
有关更多详细信息,请参阅 CTS shim 包。
CTS 发行说明
Android 11 引入了许多新的关键 模块和测试更改。
调试
分区供应商日志记录
Android 11 添加了一个新的 HAL,IDumpstateDevice(版本 1.1)。此 HAL 公开了新方法,以更严格地限定包含在标准错误报告中的供应商日志范围,并允许用户构建打开和关闭供应商日志记录(用户构建的默认设置为关闭)。这使 OEM 能够更好地控制特定类型的错误报告中包含的内容。
GWP-ASan:堆损坏检测
GWP-ASan 是一种原生内存分配器功能,可帮助在 32 位和 64 位进程中查找释放后使用和堆缓冲区溢出错误。
GWP-ASan 在 Android 11 中自动为系统应用和平台可执行文件启用。请勿在平台中禁用它,并在您的应用中启用它。
更新
动态系统更新 (DSU) 增强功能
Android 10 包含 动态系统更新 (DSU) 的增强功能,包括
- 一个新的前端,一键式 DSU 加载器
- 支持多分区 DSU
- OEM 签名的 DSU,以增强安全性
- 管理 DSU 和设备之间兼容性的新方法
用于多个 SKU 的 OTA 包
Android 11 或更高版本支持使用单个 OTA 软件包,用于具有不同 SKU 的多个设备。这样做需要配置目标设备以使用动态指纹,并更新 OTA 元数据(使用 OTA 工具),以在前提条件和后置条件条目中包含设备名称和指纹。
签署版本以供发布
Android 11 中更改了用于签署版本以供发布的多个 CLI 命令。
供应商测试套件 (VTS) 11
Android 11 供应商测试套件 (VTS) 对内核和硬件抽象层 (HAL) 进行了广泛的测试。
Virtual A/B
Android 11 通过提供 Virtual A/B 统一了 A/B 更新和非 A/B 更新。Virtual A/B 为设备带来无缝更新,同时最大限度地降低存储成本。
测试
默认使用 Scudo 堆分配器
从 Android 11 开始,scudo 堆分配器用于所有原生代码(低内存设备除外,这些设备仍使用 jemalloc)。因此,您不再需要基于每个二进制文件启用 scudo。有关 scudo 的更多信息,请参阅 Scudo 页面。
电视
CAS 框架
Android 11 为 Android TV 支持媒体条件访问系统 (Media CAS) 框架,该框架为第三方开发人员和 OEM 提供了标准的 Java API。有关更多详细信息,请参阅 CAS 框架。
多媒体隧道
对于 Android 11,用户可以使用直接从 Tuner 馈送的音频和视频内容来实现多媒体隧道。
Tuner 框架
Android 11 为 Android TV 支持 Tuner 框架,该框架使用 Tuner HAL、Tuner SDK API 和 Tuner Resource Manager 交付 A/V 内容。
TV 输入框架
Android TV 输入框架 (TIF) 简化了向 Android TV 交付直播内容的过程,为制造商提供了一个标准 API,用于创建输入模块以控制 Android TV,并启用直播电视搜索和推荐。Android 11 为 TIF 引入了三个新组件。