本页总结了 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
和 vendor 分区。现在您可以控制产品分区对原生接口和 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
,并且 /proc/filesystems
下未列出 debugfs
。
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 实现。
Automotive
版本详情
如需了解新的 Automotive 功能和增强功能,请参阅 Automotive 版本详情。
USB Port Reset API
设备制造商可以在 Android 11 中实现 USB Port Reset API,以重置所连接的主机的 USB 小工具连接。
相机
相机焦外成像
从 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 重新处理
- 3 级设备
- 支持逻辑相机
- 支持仅深度相机
此模拟相机 HAL 位于 /platform/hardware/google/camera/devices/EmulatedCamera/hwl
中。
多摄像头最佳做法
若要在保持应用兼容性的同时充分利用多摄像头支持的功能,请在实现逻辑多摄像头设备时遵循这些最佳实践。这包括有关使用 Android 11 中引入的 ANDROID_CONTROL_ZOOM_RATIO
API 的最佳做法。
系统相机
Android 11 通过 android.permission.SYSTEM_CAMERA
权限引入了对系统相机的支持。系统相机允许您实现可在特权应用或系统应用中使用的相机功能,但不能供第三方公开应用使用。
兼容性
Android 11 兼容性定义文档是在之前版本的基础上编写的,并进行了一些更新,更新中涵盖了新功能以及对之前已发布功能的要求进行的更改。
连接性
蓝牙和 NFC
NFC 脱离主机的付款同步
Android 支持通过具有安全元件的 NFC 卡模拟进行脱离主机的卡模拟,但“触碰付款”设置中指定的首选付款服务可能与安全元件中的应用不同步。
Android 11 通过脱离主机的付款同步功能解决了此问题,借助此机制,您可以同步“触碰付款”中的付款配置、感应式前端 (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) 来说非常有用。
Connectivity Diagnostics API
Connectivity Diagnostics API 允许拥有或管理网络的应用(例如,运营商应用、VPN 应用和 WLAN 建议应用)从框架接收网络连接诊断信息。
Open Mobile API 变更
Android 11 针对 Open Mobile API (OMAPI) 引入了额外功能:
- 解析运营商权限的规则。
使用以下一项或多项自定义嵌入式安全元件 (eSE) 访问权限或配置 eSE:
- SECURE_ELEMENT_PRIVILEGED_OPERATION 系统特许权限
- 可配置的访问规则应用主数据 (ARA-M) 应用标识符 (AID)
reset
用于重置 OMAPI 读取器的系统 API
为读取器提供清晰的指示符,以便应用过滤设备功能。
信号强度报告
在 Android 11 中,您可以选择和自定义多种信号衡量类型,供框架用以报告 4G LTE 和 5G NR 无线接入网络 (RAN) 的信号强度。然后,您可以使用报告的信号强度控制信号条在设备上的显示方式。
Wi-Fi
运营商 WLAN 网络配置
在 Android 11 中,您可以使用 Wi-Fi suggestion API 添加运营商 WLAN 网络配置,而无需在运营商配置管理器中配置 carrier_wifi_string_array
参数。
用于网络共享的 WLAN 热点(软 AP)支持
Android 11 引入了改进的 Wi-Fi 热点(软 AP)配置,可为运营商用例和自定义提供更大支持。这些更改可让设备制造商配置以下内容:
- SSID 和 BSSID
- 安全类型(包括 WPA3)
- 隐藏的 SSID
- 操作频段和频道(包括 ACS)
- 允许的客户端数量上限
- 自动关闭超时值
- 使用户能够控制关联设备的许可名单和屏蔽名单
WLAN 网络选择增强功能
Android 11 引入了Wi-Fi 网络选择增强功能,以改进 Wi-Fi 网络连接。
WLAN Passpoint 增强功能
Android 11 为 Passpoint 功能引入了以下增强功能:
- 配置文件到期支持可让系统通知用户并强制规定配置文件失效日期。这需要
SubscriptionParameters/ExpirationDate
字段已初始化的配置文件。 - 支持 Passpoint R1 配置文件的不公开自签名 CA 证书。
- 支持不含 CA 证书的 Passpoint R1 配置文件。系统使用默认信任存储空间验证连接。
- 支持独立于 ANQP FQDN(在 PPS-MO 中使用
Extension/Android
节点)配置已命名的 AAA 网域。这样一来,您就可以指定与通告网域不同的 AAA 网域,而不会影响连接安全性。 - 支持多个具有相同 FQDN 的已安装 Passpoint 配置。这适用于在其网络上部署多个移动设备国家/地区代码 (MCC) 和移动网络代码 (MNC) 组合的运营商,但只具有单个 FQDN。
- 能够检测和接受 Passpoint R3 接入点。
- 改进了网络匹配:
- 支持与
HomeSP/HomeOIList
匹配的家庭网络服务提供商。 - 支持与
HomeSP/OtherHomePartners
匹配的家庭网络服务提供商。 - 移除了 Passpoint 规范不需要的 EAP 方法匹配要求。
- 支持与
WLAN 配置文件改进了通用名称支持
在 Android 11 中,如果在可选的 Android
扩展子树中指定了通用名称,当运营商的根证书授权机构 (CA) 发生变化时,Wi-Fi 配置文件仍有效。在以前的版本中,如果根 CA 发生变化,用户必须从运营商下载新的配置文件。
数据
数据访问审核
Android 11 引入了数据访问审核,以便应用开发者更好地了解其应用和依赖项如何访问用户的私人数据(例如位置信息和相机数据)。对于复杂的多用途应用,开发者可以定义归因标记以标识应用的不同部分。
如需了解详情,请参阅数据访问审核。
显示
Bubbles notification API 更新
Android 10 引入了 Bubbles notification API,可让用户从设备上的任何位置轻松进行多任务处理。Android 11 包含多项气泡增强功能。最显著的变化是默认开启气泡功能,以及将设置从开发者选项中移出。在 Android 平台中实现气泡功能无需执行任何操作。
设备控制器
从 Android 11 开始提供设备控制器,可让用户通过电源菜单快速查看和控制外部设备(例如灯、恒温器和相机)。设备集合商家(例如 Google Home)和第三方供应商应用可以提供需在此工作区中显示的设备。无需任何平台实现工作即可支持此功能。AOSP 系统界面中包含了默认实现。如需了解如何向控制应用添加对设备控制器的支持,请参阅 Android 开发者页面的控制外部设备。
文本分类器更新
Android 11 引入了 ExtServices Mainline 模块中文本分类器服务的可更新默认实现。建议设备制造商使用 TextClassifierService
的这一实现,因为它可以通过 Mainline OTA 更新进行更新。
企业
实现自定义用户类型
Android 11 引入了定义明确的用户类型概念,用于表示 Android 多用户功能所允许的各种不同类型的用户。借助此功能,OEM 可以自定义预定义的 AOSP 用户类型,并定义新的个人资料类型。如需了解详情,请参阅有关用户类型的部分。
工作资料改进
Android 11 包含工作资料的隐私性和易用性增强功能,旨在应对主要的易用性挑战。必须要在整个生态系统中统一实施这些改进。
支持 Android 的 IT 管理员必须在用户使用的任意 Android 设备上支持这种体验。提高关键工作流的用户体验一致性可大大降低在 BYOD 环境中支持 Android 的成本。在不同设备上一致地实现隐私功能也会增强用户置信度。部分更新包括:
- 应用列表具有单独的标签页,分别对应“个人”和“工作”。
- 工作标签页包含一个用于关闭工作资料的切换开关。
- 工作资料关闭后,工作应用图标会变为灰色;工作标签页上的叠加层会显示工作应用被暂停。
交互
Context Hub 运行时环境更新
Android 11 引入了 CHRE API v1.4,它支持 5G 移动网络信息、nanoapp 调试转储和其他改进。还支持在 nanoapp 中使用适用于微控制器的 TensorFlow Lite。如需了解详情,请参阅 Context Hub 运行时环境 (CHRE)。
触觉
Android 11 包含关于在设备上实现触感反馈和评估触感反馈性能的新指南。
输入
游戏手柄
Android 11 增加了对第三方游戏控制器的支持,包括:
任天堂 Switch Pro 控制器:Android 添加了对任天堂 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 支持 Neural Networks API 的 8 位有符号量化。如需了解详情,请参阅 Android 11 中的 NN HAL 更新。
测试改进
Android 11 包含一个测试实用程序,用于对 NNAPI 驱动程序实现执行模糊测试以及一系列崩溃测试,以验证在高负荷使用情况下驱动程序的弹性。
如需了解详情,请参阅:
传感器
合页角度传感器类型
Android 11 引入了合页角度传感器类型,用于表示测量设备两个主要部分之间角度的传感器。
传感器 Multi-HAL 2.1
Android 11 提供传感器 Multi-HAL 2.1,它是传感器 Multi-HAL 2.0 的迭代,支持加载子 HAL,可以表明合页角度传感器类型。如需支持此传感器类型,子 HAL 必须使用 2.1 子 HAL 头文件中定义的子 HAL API。
媒体
DRM
Android 11 通过移除 MediaDrmService 简化 MediaDrm/Crypto IPC 路径。添加了新的 MediaDrm
API 以枚举可用的 DRM 插件。
MediaCodec 低延时解码
Android 11 包含 MediaCodec 2.0,能够以低延时方式实现媒体解码,这对实时应用来说至关重要。
其他
AOSP 图库应用要求的更新
从 Android 11 开始,AOSP 图库应用不要求支持 ACTION_VIEW
Intent 的 application/sdp
MIME 类型。已从 AOSP 图库应用清单文件中移除 application/sdp
MIME 类型的 ACTION_VIEW
intent 过滤器。
这些要求记录于 CDD 的 3.2.3.1核心应用 Intent 部分。
性能
用户空间 lmkd
Android 11 引入了新的终止策略,以防止内存匮乏和性能下降。
电源
电视待机时自动休眠
在 Android 11 中,我们为电视待机推出了一项称为自动休眠的新功能。这是一项节能功能,可通过它设置闲置超时时间,在该时间之后设备将进入休眠状态,即使唤醒锁已启用。
安全
OEMCrypto
Android 11 支持 OEMCrypto API 版本 16。
存储空间
分区存储
Android 11 支持分区存储,限制应用访问外部存储。此外,MediaProvider 还可成为外部存储的文件系统处理程序(用于 FUSE),使外部存储上的文件系统和 MediaProvider 数据库保持一致。
SDCardFS 弃用
Android 11 已弃用 SDCardFS。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 指明了新的方法,以便更严格地对标准 bug 报告中包含的供应商日志进行分区,并允许用户 build 打开和关闭供应商日志记录(用户 build 的默认设置为关闭)。通过这种方式,原始设备制造商 (OEM) 可以更好地控制在特定类型的 bug 报告中包含哪些内容。
GWP-ASan:堆损坏检测
GWP-ASan 是一种本机内存分配器功能,可帮助您查找 32 位和 64 位进程中的“释放后使用”和“堆缓冲区溢出”错误。
在 Android 11 中,系统应用和平台可执行文件会自动启用 GWP-ASan。请勿在平台中将其停用,然后在您的应用中将其启用。
更新
动态系统更新 (DSU) 增强功能
Android 10 提供动态系统更新 (DSU) 增强功能,其中包括:
- 新的前端,一键式 DSU 加载器
- 支持多分区 DSU
- 带有原始设备制造商 (OEM) 签名的 DSU,以增强安全性
- 管理 DSU 和设备之间兼容性的新方式
用于多个 SKU 的 OTA 软件包
Android 11 或更高版本支持为具有不同 SKU 的多台设备使用单个 OTA 软件包。为此,需要将目标设备配置为使用动态指纹并更新 OTA 元数据(使用 OTA 工具),以便在先后条件条目中添加设备名称和指纹。
对需要发布的 build 进行签名
Android 11 中更改了用于对要发布的 build 进行签名的多个 CLI 命令。
供应商测试套件 (VTS) 11
Android 11 供应商测试套件 (VTS) 针对内核和硬件抽象层 (HAL) 提供了大量测试。
虚拟 A/B
Android 11 通过提供虚拟 A/B 统一 A/B 更新和非 A/B 更新。虚拟 A/B 为设备带来无缝更新,同时最大限度地降低存储开销。
测试
默认使用 Scudo 堆分配器
从 Android 11 开始,Scudo 堆分配器会用于所有原生代码(低内存设备除外,其仍使用 jemalloc)。因此,您不再需要基于每个二进制文件启用 Scudo。如需详细了解 Scudo,请参阅 Scudo 页面。
电视
CAS 框架
Android 11 支持适用于 Android TV 的媒体条件访问系统 (Media CAS) 框架,为第三方开发者和原始设备制造商 (OEM) 提供标准 Java API。如需了解详情,请参阅 CAS 框架。
多媒体隧道
对于 Android 11,用户可以实现具有直接来自调谐器的音频和视频内容的多媒体隧道。
调谐器框架
Android 11 支持 Android TV 的调谐器框架,该框架使用调谐器 HAL、调谐器 SDK API 和调谐器资源管理器提供 A/V 内容。
TV 输入框架
Android TV 输入框架 (TIF)简化了向 Android TV 传送直播内容的过程,为制造商提供标准 API,以创建用于控制 Android TV 的输入模块,以及启用直播电视搜索和建议。Android 11 为 TIF 引入了三个新组件。