安卓14
2023 年 11 月 20 日
2. 设备类型
查看修订版
如果手持设备实现声明支持任何 64 位 ABI(带或不带任何 32 位 ABI):
查看修订版
- [ 7.5 /H-1-13] 如果有超过 1 个 RGB 后置摄像头,则必须支持主后置摄像头的
LOGICAL_MULTI_CAMERA
功能。
- [ 7.5 /H-1-13] 如果有超过 1 个 RGB 后置摄像头,则必须支持主后置摄像头的
查看修订版
[ 5.8 /T-0-1]必须将 HDMI 输出模式设置为所选 SDR 或 HDR 格式的最高分辨率,该格式适用于外部显示器的 50Hz 或 60Hz 刷新率。
必须设置 HDMI 输出模式以选择 50Hz 或 60Hz 刷新率可支持的最大分辨率。
查看修订版
- [9/W-0-1] 必须声明
android.hardware.security.model.compatible feature
。
- [9/W-0-1] 必须声明
6. 开发者工具和选项兼容性
查看修订版
- [C-0-12] 必须将
LMK_KILL_OCCURRED_FIELD_NUMBER
Atom 写入
查看修订版
- [C-0-13] 必须执行 shell 命令
dumpsys gpu --gpuwork
才能显示
- [C-0-12] 必须将
9. 安全模型兼容性
查看修订版
如果设备实现使用能够支持 SELinux 的 Linux 内核,则:
查看修订版
如果设备实现使用 Linux 以外的内核或不带 SELinux 的 Linux,则:
2023 年 10 月 4 日
2. 设备类型
查看修订版
如果 Android 设备实现满足以下所有条件,则将其归类为手持设备:
- 物理对角线屏幕尺寸范围为4 英寸
3.3 英寸(对于 API 级别 29 或更早版本的设备实现为 2.5 英寸)到 8 英寸。
开始新的要求
- 具有触摸屏输入界面。
- 物理对角线屏幕尺寸范围为4 英寸
查看修订版
手持设备实现:
- [ 7.1 .1.1/H-0-1] 必须至少有一个
Android 兼容显示器,满足本文档中描述的所有要求。显示屏短边至少为 2.2 英寸,长边至少为 3.4 英寸。
如果手持设备实现支持软件屏幕旋转,则它们:
- [ 7.1 .1.1/H-1-1]* 必须使可供第三方应用程序使用的逻辑屏幕的短边至少为 2 英寸,长边至少为 2.7 英寸。搭载 Android API 级别 29 或更早版本的设备可能不受此要求的约束。
如果手持设备实施不支持软件屏幕旋转,则:
- [ 7.1 .1.1/H-2-1]* 必须使可供第三方应用程序使用的逻辑屏幕的短边至少为 2.7 英寸。搭载 Android API 级别 29 或更早版本的设备可能不受此要求的约束。
开始新的要求
如果手持设备实现声明
android.hardware.audio.output
和android.hardware.microphone
,它们:[ 5.6 /H-1-1] 在以下数据路径上,5 次测量的平均连续往返延迟必须为300毫秒或更短,平均绝对偏差小于30 毫秒:“扬声器到麦克风”,3.5 毫米环回适配器(如果支持)、USB 环回(如果支持)。
[ 5.6 /H-1-2] 在扬声器到麦克风数据路径上的至少 5 次测量中,平均点击音延迟必须为300毫秒或更短。
如果手持设备实施包括至少一个触觉执行器,则它们:
- [ 7.10 /H]* 不应使用偏心旋转质量 (ERM) 触觉执行器(振动器)。
- [ 7.10 /H]* 应在android.view.HapticFeedbackConstants中实现清晰触觉的所有公共常量,即(CLOCK_TICK、CONTEXT_CLICK、KEYBOARD_PRESS、KEYBOARD_RELEASE、KEYBOARD_TAP、LONG_PRESS、TEXT_HANDLE_MOVE、VIRTUAL_KEY、VIRTUAL_KEY_RELEASE、CONFIRM、REJECT、GESTURE_ START和GESTURE_END)。
- [ 7.10 /H]* 应实现android.os.VibrationEffect中用于清晰触觉的所有公共常量,即(EFFECT_TICK、EFFECT_CLICK、EFFECT_HEAVY_CLICK 和 EFFECT_DOUBLE_CLICK),以及android.os.VibrationEffect.Composition中用于丰富触觉的所有可行公共
PRIMITIVE_*
常量,即(单击、滴答声、低滴答声、快速下降、快速上升、慢速上升、旋转、轰鸣)。其中一些原语(例如 LOW_TICK 和 SPIN)可能仅在振动器可以支持相对较低的频率时才可行。 - [7.10/H]* 应遵循将android.view.HapticFeedbackConstants中的公共常量映射到推荐的android.os.VibrationEffect常量的指南,并具有相应的幅度关系。
- [ 7.10 /H]* 应遵循createOneShot()和createWaveform() API 的质量评估。
- [ 7.10 /H]* 应验证公共android.os.Vibrator.hasAmplitudeControl() API 的结果是否正确反映了其振动器的功能。
- [ 7.10 /H]* 应将执行器放置在通常用手握住或触摸设备的位置附近。
如果手持设备实施包括至少一个通用7.10线性谐振执行器,则它们:
- [ 7.10 /H] 应将执行器放置在通常用手握住或触摸设备的位置附近。
- [ 7.10 /H] 应在设备自然
纵向方向的 X 轴(左右)上移动触觉执行器。
如果手持设备实现具有通用触觉执行器,即 X 轴线性谐振执行器 (LRA),则它们:
- [ 7.10 /H] X 轴 LRA 的谐振频率应低于 200 Hz。
- [ 7.1 .1.1/H-0-1] 必须至少有一个
查看修订版
手持设备实现必须支持以下视频编码格式并使其可供第三方应用程序使用:
- [ 5.2 /H-0-3] AV1
手持设备实现必须支持以下视频解码格式并使其可供第三方应用程序使用:
- [ 5.3 /H-0-6] AV1
查看修订版
如果手持设备实现包括对
ControlsProviderService
和Control
API 的支持并允许第三方应用程序发布设备控件,那么它们:- [ 3.8 .16/H-1-6] 设备实现必须准确地呈现用户可供性,如下所示:
- 如果设备已设置
config_supportsMultiWindow=true
并且应用程序在ControlsProviderService
声明中声明元数据META_DATA_PANEL_ACTIVITY
,包括有效活动的 ComponentName(由 API 定义),则应用程序必须将所述活动嵌入到此用户功能中。 - 如果应用程序未声明元数据
META_DATA_PANEL_ACTIVITY
,则它必须呈现ControlsProviderService
API 提供的指定字段以及Control API 提供的任何指定字段。
- 如果设备已设置
- [ 3.8 .16/H-1-7] 如果应用程序声明了元数据
META_DATA_PANEL_ACTIVITY
,则在启动嵌入式活动时,它必须使用EXTRA_LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS
传递 [3.8.16/H-1-5] 中定义的设置值。
如果设备实现允许用户拨打任何类型的电话,他们
- [ 7.4.1.2 /H-0-1] 必须声明功能标志
android.software.telecom
。 - [ 7.4.1.2/H-0-2 ] 必须实现电信框架。
- [ 3.8 .16/H-1-6] 设备实现必须准确地呈现用户可供性,如下所示:
查看修订版
手持设备实现:
- [ 8.5 /H-0-2]必须为用户提供停止正在运行前台服务或用户启动作业的应用程序的功能。
查看修订版
如果设备实现声明支持android.hardware.telephony
,则:
- [ 9.5 /H-1-1] 不得将
UserManager.isHeadlessSystemUserMode
设置为true
。
如果设备实现具有安全锁定屏幕并包含一个或多个实现TrustAgentService
系统 API 的信任代理,则它们:
- [ 9.11.1 /H-1-1] 必须以高于每 72 小时一次的频率向用户询问推荐的主要身份验证方法之一(例如:PIN、图案、密码)。
如果手持设备实现将UserManager.isHeadlessSystemUserMode
设置为true
,则它们
如果手持设备实现支持系统 API HotwordDetectionService
或其他没有麦克风访问指示的热词检测机制,则它们:
- [9.8/H-1-1] 必须确保热词检测服务只能将数据传输到 System、
ContentCaptureService
或由SpeechRecognizer#createOnDeviceSpeechRecognizer()
创建的设备上语音识别服务。 - [9.8/H-1-6] 不得允许在每个成功的热词结果上从热词检测服务传输超过 100 个字节的数据(不包括音频流) 。
- [9.8/H-1-15] 必须确保在成功的热词结果上提供的音频流从热词检测服务到语音交互服务的单向传输。
如果设备实现包括使用系统 API HotwordDetectionService
应用程序,或类似的没有麦克风使用指示的热词检测机制,则该应用程序:
- [9.8/H-2-3] 不得从热词检测服务传输音频数据、可用于重建(全部或部分)音频的数据或与热词本身无关的音频内容,除了
ContentCaptureService
或设备上的语音识别服务。
如果手持设备实现支持系统 API VisualQueryDetectionService
或其他没有麦克风和/或摄像头访问指示的查询检测机制,则它们:
- [9.8/H-3-1] 必须确保查询检测服务只能将数据传输到系统、
ContentCaptureService
或设备上语音识别服务(由SpeechRecognizer#createOnDeviceSpeechRecognizer()
创建)。 - [9.8/H-3-2] 不得允许从
VisualQueryDetectionService
传输任何音频或视频信息,但ContentCaptureService
或设备上语音识别服务除外。 - [9.8/H-3-3] 当设备检测到用户意图与数字助理应用程序交互时(例如,通过摄像头检测用户存在),必须在系统 UI 中显示用户通知。
- [9.8/H-3-4] 必须显示麦克风指示器,并在检测到用户查询后立即在 UI 中显示检测到的用户查询。
- [9.8/H-3-5] 不得允许用户可安装的应用程序提供可视化查询检测服务。
查看修订版
如果手持设备实现为android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.T
,那么它们:
- 必须满足Android 13 CDD 第 2.2.7.1 节中列出的媒体要求。
开始新的要求
如果手持设备实现为android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.U
,那么它们:- [5.1/H-1-1] 必须通过
CodecCapabilities.getMaxSupportedInstances()
和VideoCapabilities.getSupportedPerformancePoints()
方法通告可以在任何编解码器组合中同时运行的硬件视频解码器会话的最大数量。 - [5.1/H-1-2] 必须支持任何编解码器组合中的 6 个 8 位 (SDR) 硬件视频解码器会话实例(AVC、HEVC、VP9、AV1 或更高版本),并以 1080p 分辨率@30 fps 与 3 个会话同时运行以及 3 个 4k 分辨率@30fps 的会话,除非 AV1。 AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 1080p30fps 的 6 个实例。
- [5.1/H-1-3] 必须通过
CodecCapabilities.getMaxSupportedInstances()
和VideoCapabilities.getSupportedPerformancePoints()
方法通告可以在任何编解码器组合中同时运行的硬件视频编码器会话的最大数量。 - [5.1/H-1-4] 必须在任何编解码器组合中支持 6 个 8 位 (SDR) 硬件视频编码器会话实例(AVC、HEVC、VP9、AV1 或更高版本),并以 1080p 分辨率@30 fps 与 4 个会话同时运行以及 2 个 4k 分辨率@30fps 的会话,除非 AV1。 AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 1080p30fps 的 6 个实例。
- [5.1/H-1-5] 必须通过
CodecCapabilities.getMaxSupportedInstances()
和VideoCapabilities.getSupportedPerformancePoints()
方法通告可以在任何编解码器组合中同时运行的硬件视频编码器和解码器会话的最大数量。 - [5.1/H-1-6] 必须在与 3 个 4K 会话同时运行的任何编解码器组合中支持 6 个 8 位 (SDR) 硬件视频解码器和硬件视频编码器会话(AVC、HEVC、VP9、AV1 或更高版本)实例@30fps 分辨率(AV1 除外),其中最多 2 个编码器会话和 3 个 1080p 分辨率会话。 AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 1080p30fps 的 6 个实例。
- [5.1/H-1-19] 必须支持以 4K@30fps 分辨率同时运行的任何编解码器组合中的 3 个 10 位 (HDR) 硬件视频解码器和硬件视频编码器会话(AVC、HEVC、VP9、AV1 或更高版本)实例(除非 AV1)其中最多 1 个是编码器会话,可以通过 GL 表面以 RGBA_1010102 输入格式进行配置。如果从 GL 表面进行编码,则不需要编码器生成 HDR 元数据。 AV1 编解码器会话仅需要支持 1080p 分辨率,即使此要求需要 4K。
- [5.1/H-1-7] 在负载下,所有硬件视频编码器的 1080p 或更小的视频编码会话的编解码器初始化延迟必须为 40 毫秒或更短。此处的加载被定义为使用硬件视频编解码器以及 1080p 音频视频录制初始化的并发 1080p 到 720p 仅视频转码会话。对于杜比视界编解码器,编解码器初始化延迟必须为 50 毫秒或更短。
- [5.1/H-1-8] 在负载下,所有音频编码器的 128 kbps 或更低比特率音频编码会话的编解码器初始化延迟必须为 30 ms 或更短。此处的加载被定义为使用硬件视频编解码器以及 1080p 音频视频录制初始化的并发 1080p 到 720p 仅视频转码会话。
- [5.1/H-1-9] 必须在任何编解码器组合中支持 2 个安全硬件视频解码器会话实例(AVC、HEVC、VP9、AV1 或更高版本),同时以 4k 分辨率@30 fps(除非 AV1)运行,适用于 8-位 (SDR) 和 10 位 HDR 内容。 AV1 编解码器会话仅需要支持 1080p 分辨率,即使此要求需要 4K。
- [5.1/H-1-10] 必须在任何编解码器中支持 3 个非安全硬件视频解码器会话实例以及 1 个安全硬件视频解码器会话实例(总共 4 个实例)(AVC、HEVC、VP9、AV1 或更高版本)与 3 个 4K 分辨率@30 fps 会话同时运行的组合(除非 AV1),其中包括 1 个安全解码器会话和 1 个 1080p 分辨率@30fps 的 nn 安全会话,其中最多 2 个会话可以采用 10 位 HDR。 AV1 编解码器会话仅需要支持 1080p 分辨率,即使此要求需要 4K。
- [5.1/H-1-11] 必须支持设备上每个硬件 AVC、HEVC、VP9 或 AV1 解码器的安全解码器。
- [5.1/H-1-12] 在负载下,所有硬件视频解码器的 1080p 或更小的视频解码会话的编解码器初始化延迟必须为 40 ms 或更短。此处的加载被定义为使用硬件视频编解码器以及 1080p 音频-视频播放初始化的并发 1080p 到 720p 仅视频转码会话。对于杜比视界编解码器,编解码器初始化延迟必须为 50 毫秒或更短。
- [5.1/H-1-13] 在负载下,所有音频解码器的 128 kbps 或更低比特率音频解码会话的编解码器初始化延迟必须为 30 ms 或更短。此处的加载被定义为使用硬件视频编解码器以及 1080p 音频-视频播放初始化的并发 1080p 到 720p 仅视频转码会话。
- [5.1/H-1-14] 必须支持 AV1 硬件解码器 Main 10、Level 4.1 和胶片颗粒。
- [5.1/H-1-15] 必须至少有 1 个支持 4K60 的硬件视频解码器。
- [5.1/H-1-16] 必须至少有 1 个支持 4K60 的硬件视频编码器。
- [5.3/H-1-1] 对于负载下的 4K 60 fps 视频会话,不得在 10 秒内丢失超过 1 帧(即帧丢失率低于 0.167%)。
- [5.3/H-1-2] 在 4K 会话负载下的 60 fps 视频会话中,在视频分辨率更改期间,10 秒内不得丢弃超过 1 帧。
- [5.6/H-1-1] 使用 CTS Verifier 点击音调测试时,点击音调延迟必须为 80 毫秒或更短。
- [5.6/H-1-2] 在至少一条受支持的数据路径上,往返音频延迟必须为 80 毫秒或更短。
- [5.6/H-1-3] 必须支持 >=24 位音频,以便通过 3.5 毫米音频插孔(如果存在)实现立体声输出;如果通过整个数据路径支持 USB 音频,以实现低延迟和流式传输配置。对于低延迟配置,应用程序应在低延迟回调模式下使用 AAudio。对于流式传输配置,应用程序应使用 Java AudioTrack。在低延迟和流配置中,HAL 输出接收器应接受
AUDIO_FORMAT_PCM_24_BIT
、AUDIO_FORMAT_PCM_24_BIT_PACKED
、AUDIO_FORMAT_PCM_32_BIT
或AUDIO_FORMAT_PCM_FLOAT
作为其目标输出格式。 - [5.6/H-1-4] 必须支持 >=4 通道 USB 音频设备(DJ 控制器使用它来预览歌曲。)
- [5.6/H-1-5] 必须支持类兼容的 MIDI 设备并声明 MIDI 功能标志。
- [5.6/H-1-9] 必须支持至少 12 通道混合。这意味着能够打开具有 7.1.4 通道掩码的 AudioTrack 并正确地将所有通道空间化或缩混为立体声。
- [5.6/H-SR] 强烈建议支持 24 通道混合,至少支持 9.1.6 和 22.2 通道掩码。
- [5.7/H-1-2] 必须支持具有以下内容解密功能的
MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL
。
最小样本量 | 4MB |
最小子样本数 - H264 或 HEVC | 32 |
最小子样本数 - VP9 | 9 |
最小子样本数 - AV1 | 288 |
最小子样本缓冲区大小 | 1 MiB |
最小通用加密缓冲区大小 | 500 KB |
最小并发会话数 | 30 |
每个会话的最小密钥数量 | 20 |
最小密钥总数(所有会话) | 80 |
DRM 密钥的最小总数(所有会话) | 6 |
消息大小 | 16 KB |
每秒解密帧数 | 60 帧/秒 |
- [5.1/H-1-17] 必须至少有 1 个支持 AVIF 基线配置文件的硬件图像解码器。
- [5.1/H-1-18] 必须支持 AV1 编码器,该编码器可以以 30fps 和 1Mbps 编码高达 480p 的分辨率。
-
[5.12/H-1-1] 必须[5.12/H-SR] 强烈建议支持设备上存在的所有硬件 AV1 和 HEVC 编码器的Feature_HdrEditing
功能。 - [5.12/H-1-2] 设备上存在的所有硬件 AV1 和 HEVC 编码器必须支持 RGBA_1010102 颜色格式。
- [5.12/H-1-3] 必须通告对 EXT_YUV_target 扩展的支持,以从 8 位和 10 位的 YUV 纹理中进行采样。
- [7.1.4/H-1-1] 数据处理单元 (DPU) 硬件编辑器 (HWC) 中必须至少有 6 个硬件覆盖层,其中至少 2 个能够显示 10 位视频内容。
如果手持设备实现为android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.U
并且它们包含对硬件 AVC 或 HEVC 编码器的支持,那么它们:
- [5.2/H-2-1] 必须满足硬件 AVC 和 HEVC 编解码器的视频编码器率失真曲线定义的最低质量目标,如即将发布的文档中所定义。
查看修订版
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.U
,那么它们:- [ 7.5 /H-1-1] 必须有一个主后置摄像头,分辨率至少为 12 兆像素,支持 4k@30fps 视频拍摄。主后置摄像头是摄像头 ID 最低的后置摄像头。
- [ 7.5 /H-1-2] 必须有一个分辨率至少为 6 兆像素的前置主摄像头,并支持 1080p@30fps 的视频拍摄。主前置摄像头是摄像头 ID 最低的前置摄像头。
- [ 7.5 /H-1-3] 对于两个主摄像头,必须支持
android.info.supportedHardwareLevel
属性为 FULL 或更好。 - [ 7.5 /H-1-4] 两个主摄像头必须支持
CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
。 - [ 7.5 /H-1-5] 对于 1080p 分辨率,相机 2 JPEG 捕获延迟必须小于 1000
900毫秒(根据 ITS 照明条件 (3000K) 下的 CTS 相机性能测试对两个主相机进行测量)。 - [ 7.5 /H-1-6] 两个主摄像头的摄像头 2 启动延迟(打开摄像头到第一个预览帧)必须 < 500 毫秒,由 CTS 摄像头性能测试在 ITS 照明条件 (3000K) 下测量得出。
- [ 7.5 /H-1-8] 必须支持主后置摄像头的
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW
和android.graphics.ImageFormat.RAW_SENSOR
。 - [ 7.5 /H-1-9] 必须有一个支持 720p 或 1080p @ 240fps 的后置主摄像头。
- [ 7.5 /H-1-10] 如果有面向同一方向的超宽 RGB 摄像头,则主摄像头的最小 ZOOM_RATIO 必须 < 1.0。
- [ 7.5 /H-1-11] 必须在主摄像机上实现并发前后流。
- [ 7.5 /H-1-12] 必须支持主前置摄像头和主后置摄像头的
CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION
。 - [ 7.5 /H-1-13] 如果有超过 1 个 RGB 摄像头面向同一方向,则必须支持主摄像头的
LOGICAL_MULTI_CAMERA
功能。 - [ 7.5 /H-1-14] 必须支持主前置摄像头和主后置摄像头的
STREAM_USE_CASE
功能。 - [ 7.5 /H-1-15] 必须通过主摄像头的 CameraX 和 Camera2 扩展来支持
散景和夜间模式扩展。 - [ 7.5 /H-1-16] 必须支持主摄像头的 DYNAMIC_RANGE_TEN_BIT 功能。
- [ 7.5 /H-1-17] 必须支持主摄像头的CONTROL_SCENE_MODE_FACE_PRIORITY和人脸检测( STATISTICS_FACE_DETECT_MODE_SIMPLE或STATISTICS_FACE_DETECT_MODE_FULL )。
查看修订版
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.U
,那么它们:- [7.1.1.1/H-2-1] 屏幕分辨率必须至少为 1080p。
- [7.1.1.3/H-2-1] 屏幕密度必须至少为 400 dpi。
- [7.1.1.3/H-3-1] 必须具有平均至少支持 1000 尼特的 HDR 显示器。
- [7.6.1/H-2-1] 必须至少有 8 GB 物理内存。
查看修订版
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
返回android.os.Build.VERSION_CODES.U
,那么它们:- [8.2/H-1-1] 必须确保至少 150 MB/s 的顺序写入性能。
- [8.2/H-1-2] 必须确保至少 10 MB/s 的随机写入性能。
- [8.2/H-1-3] 必须确保至少 250 MB/s 的顺序读取性能。
- [8.2/H-1-4] 必须确保至少 100 MB/s 的随机读取性能。
- [8.2/H-1-5] 必须确保并行顺序读取和写入性能,2 倍读取和 1 倍写入性能至少为 50 MB/s。
查看修订版
电视设备实现必须支持以下视频编码格式并使其可供第三方应用程序使用:
- [ 5.2 /T-0-3] AV1
电视设备实现必须支持以下视频解码格式并使其可供第三方应用程序使用:
- [ 5.3.2 /T-0-7] AV1
查看修订版
如果设备实现具有安全锁定屏幕并包含一个或多个实现TrustAgentService
系统 API 的信任代理,则它们:
- [ 9.11.1 /W-1-1] 必须以高于每 72 小时一次的频率向用户询问推荐的主要身份验证方法之一(例如:PIN、图案、密码)。
查看修订版
如果设备实现包括对 AM/FM 广播无线电的支持并将该功能公开给任何应用程序,则它们:
- [ 7.4
.10/A-0-1] 必须声明对FEATURE_BROADCAST_RADIO
的支持。
外视摄像头是对设备实现外部的场景进行成像的摄像头,如后视摄像头。
汽车设备实现:
- 应包括一台或多台外视摄像头。
如果汽车设备实现包括外视摄像头,对于此类摄像头,它们:
- [ 7.5 /A-1-1] 不得拥有可通过Android 相机 API访问的外景摄像头,除非它们符合摄像头核心要求。
- [ 7.5 /A-SR-1] 强烈建议不要旋转或水平镜像相机预览。
- [ 7.5 /A-SR-2] 强烈建议分辨率至少为 1.3 兆像素。
- 应具有定焦或 EDOF(扩展景深)硬件。
- 可以在相机驱动程序中实现硬件自动对焦或软件自动对焦。
如果汽车设备实现包括一个或多个外视摄像头,并加载外视系统 (EVS) 服务,那么对于这样的摄像头,它们:
- [ 7.5 /A-2-1] 不得旋转或水平镜像相机预览。
汽车设备实现:
- 可能包括一个或多个可供第三方应用程序使用的摄像头。
如果汽车设备实施包括至少一个摄像头并将其提供给第三方应用程序,那么它们:
后置摄像头是指面向世界的摄像头,可以位于车辆上的任何位置,并且面向车厢外侧;也就是说,它像后视摄像头一样对车身远端的场景进行成像。
前置摄像头是指面向用户的摄像头,可以位于车辆上的任何位置,并且面向车舱内部;也就是说,它为用户提供图像,例如用于视频会议和类似的应用程序。
汽车设备实现:
- [7.5/A-SR-1] 强烈建议包含一台或多台面向世界的摄像机。
- 可能包括一个或多个面向用户的摄像头。
- [7.5/A-SR-2] 强烈建议支持多个摄像机的并发流传输。
如果汽车设备实现包括至少一个面向世界的摄像头,那么对于这样的摄像头,它们:
- [7.5/A-1-1] 必须进行定向,以便摄像头的长尺寸与 Android 汽车传感器轴的 XY 平面对齐。
- [7.5/A-SR-3] 强烈建议使用定焦或 EDOF(扩展景深)硬件。
- [7.5/A-1-2] 必须将主面向世界的摄像机作为具有最低摄像机 ID 的面向世界的摄像机。
如果汽车设备实现包括至少一个面向用户的摄像头,那么对于这样的摄像头:
- [7.5/A-2-1] 主要面向用户的摄像头必须是具有最低摄像头 ID 的面向用户的摄像头。
- 可以进行定向,以便摄像头的长尺寸与 Android 汽车传感器轴的 XY 平面对齐。
如果汽车设备实现包括可通过android.hardware.Camera
或android.hardware.camera2
API 访问的摄像头,那么它们:
- [7.5/A-3-1] 必须符合第 7.5 节中的核心摄像头要求。
如果汽车设备实现包含无法通过android.hardware.Camera
或android.hardware.camera2
API 访问的摄像头,那么它们:
- [7.5/A-4-1] 必须可通过扩展视图系统服务进行访问。
如果汽车设备实现包括通过扩展视图系统服务访问的一个或多个摄像头,对于此类摄像头,它们:
- [7.5/A-5-1] 不得旋转或水平镜像相机预览。
- [7.5/A-SR-4] 强烈建议分辨率至少为 1.3 兆像素。
如果汽车设备实现包括一个或多个可通过扩展视图系统服务和android.hardware.Camera
或android.hardware.Camera2
API 访问的摄像头,那么对于此类摄像头,它们:
- [7.5/A-6-1] 必须报告相同的摄像机 ID。
如果汽车设备实现提供专有的相机 API,那么它们:
- [7.5/A-7-1] 必须使用
android.hardware.camera2
API 或扩展视图系统 API 实现此类相机 API。
查看修订版
汽车设备实现:
- [ 3.8 /A-0-1] 不得允许非当前前台用户的完全二级用户启动活动并有权访问任何显示器上的 UI。
查看修订版
如果汽车设备实现声明android.hardware.microphone
,则:
如果汽车设备实现声明android.hardware.camera.any
,那么它们:
- [ 9.8.2 /A-2-1] 当应用程序访问实时摄像头数据时,必须显示摄像头指示器,但当摄像头仅由具有第 9.1 节权限中
定义的角色的应用程序访问时,则必须显示摄像头指示器带有 CDD 标识符[C-4-X][C-3-X]。
如果设备实现具有安全锁定屏幕并包含一个或多个实现TrustAgentService
系统 API 的信任代理,则它们:
- [ 9.11.1 /A-1-1] 必须以高于每 336 小时一次的频率向用户询问推荐的主要身份验证方法之一(例如:PIN、图案、密码)。
3、软件
查看修订版
设备实现:
- [C-0-8] 不得支持安装 API 级别低于 23 的应用。
查看修订版
如果设备实现报告
android.hardware.nfc.uicc
或android.hardware.nfc.ese
,则:- [C-19-1] 必须实现NfcAdapter.ACTION_TRANSACTION_DETECTED Intent API(如GSM 协会技术规范 TS.26 - NFC 手机要求定义的“EVT_TRANSACTION”) 。
查看修订版
设备实现:
- [C-0-12] 必须通过
libvulkan.so
库导出核心Vulkan 1.0Vulkan 1.1函数符号的函数符号,以及VK_KHR_surface
、VK_KHR_android_surface
、VK_KHR_swapchain
、VK_KHR_maintenance1
和VK_KHR_get_physical_device_properties2
扩展。请注意,虽然所有符号都必须存在,但第 7.1.4.2 节更详细地描述了预期每个相应功能的完整实现的要求。
- [C-0-12] 必须通过
查看修订版
如果设备实现包括屏幕或视频输出,则它们:
- [C-1-5] 必须使用
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
文档中列举的颜色主题样式(请参阅android.theme.customization.theme_styles
)生成动态色调调色板,即TONAL_SPOT
、VIBRANT
、EXPRESSIVE
、SPRITZ
、RAINBOW
、FRUIT_SALAD
和MONOCHROMATIC
。
- [C-1-5] 必须使用
查看修订版
如果设备实现(包括第 7.2.3 节中详述的最近功能导航键)改变了界面,则:
- [C-1-2] 必须实现屏幕固定行为,并为用户提供用于切换该功能的设置菜单。
查看修订版
如果设备实现声明
android.software.managed_users
,它们:- [C-1-10] 当使用具有焦点(用户在所有活动中最后一个交互的活动)且属于工作配置文件的
topActivity
窗口捕获屏幕截图时,必须确保屏幕截图数据保存在工作配置文件存储中应用程序。 - [C-1-11] 将屏幕截图保存到工作配置文件时,不得捕获除工作配置文件应用程序窗口之外的任何其他屏幕内容(系统栏、通知或任何个人配置文件内容)(以确保个人配置文件数据未保存在工作配置文件中)。
- [C-1-10] 当使用具有焦点(用户在所有活动中最后一个交互的活动)且属于工作配置文件的
3.9.5 设备策略解析框架:新部分
查看修订版
如果设备实现报告
android.software.device_admin
或android.software.managed_users
,那么它们:- [C-1-1] 必须解决 AOSP 文档中所述的设备策略冲突。
5. 多媒体兼容性
查看修订版
设备实现必须支持以下图像编码:
- [C-0-4] AVIF
- 设备必须支持
BITRATE_MODE_CQ
和基线配置文件。
- 设备必须支持
- [C-0-4] AVIF
查看修订版
设备实现必须支持解码以下图像编码:
[C-0-7] AVIF(基线配置文件)
查看修订版
格式/编解码器 细节 支持的文件类型/容器格式 JPEG 基础+渐进 JPEG (.jpg) 动图 GIF (.gif) 巴布亚新几内亚 PNG (.png) 骨形态发生蛋白 位图 (.bmp) 网络P WebP (.webp) 生的 ARW (.arw)、CR2 (.cr2)、DNG (.dng)、NEF (.nef)、NRW (.nrw)、ORF (.orf)、PEF (.pef)、RAF (.raf)、RW2 ( .rw2)、SRW (.srw) 海伊夫 图像、图像集合、图像序列 HEIF (.heif)、HEIC (.heic) AVIF(基线配置文件) 图像、图像采集、图像序列基线配置文件 HEIF 容器 (.avif) 查看修订版
格式/编解码器 细节 支持的文件类型/容器格式 H.263 - 3GPP (.3gp)
- MPEG-4 (.mp4)
- Matroska(.mkv,仅解码)
H.264AVC 详细信息请参见第 5.2 节和第 5.3节 - 3GPP (.3gp)
- MPEG-4 (.mp4)
- MPEG-2 TS(.ts,不可搜索)
- Matroska(.mkv,仅解码)
H.265 HEVC 详细信息请参见第 5.3 节 - MPEG-4 (.mp4)
- Matroska(.mkv,仅解码)
MPEG-2 主要简介 - MPEG2-TS(.ts,不可查找)
- MPEG-4(.mp4,仅解码)
- Matroska(.mkv,仅解码)
MPEG-4 SP - 3GPP (.3gp)
- MPEG-4 (.mp4)
- Matroska(.mkv,仅解码)
VP8 详细信息请参见第 5.2 节和第 5.3节 - WebM (.webm)
- 玛特罗斯卡 (.mkv)
VP9 详细信息请参见第 5.3 节 - WebM (.webm)
- 玛特罗斯卡 (.mkv)
AV1 详细信息请参见第 5.2 节和第 5.3 节 - MPEG-4 (.mp4)
- Matroska(.mkv,仅解码)
查看修订版
如果设备实现支持视频编解码器:
- [C-2-1] 所有视频编解码器都必须发布以下大小的可实现的帧速率数据(如果编解码器支持):
标清(低质量) 标清(高品质) 高清720p 高清1080p 超高清 视频分辨率 - 176 x 144 像素(H263、MPEG2、MPEG4)
- 352 x 288 像素(MPEG4 编码器、H263、MPEG2)
- 320 x 180 像素(VP8、VP8)
- 320 x 240 像素(其他)
- 704 x 576 像素 (H263)
- 640 x 360 像素(VP8、VP9)
- 640 x 480 像素(MPEG4 编码器)
- 720 x 480 像素(其他, AV1 )
- 1408 x 1152 像素 (H263)
- 1280 x 720 像素(其他, AV1 )
1920 x 1080 像素(MPEG4、 AV1除外) 3840 x 2160 像素(HEVC、VP9、 AV1 ) 查看修订版
如果设备实现支持任何视频编码器并使其可供第三方应用程序使用,则它们:- 在两个滑动窗口中,帧内(I 帧)间隔之间的比特率不应超过 15%。
- 1 秒滑动窗口内的比特率不应超过 100%。
如果设备实现支持任何视频编码器并使其可供第三方应用程序使用,并设置
MediaFormat.KEY_BITRATE_MODE
改为BITRATE_MODE_VBR
,使编码器工作在可变码率模式下,那么,只要不影响最低质量下限,编码码率:-
[C-5-1] 在一个滑动窗口内,帧内(I 帧)间隔之间的比特率不得超过15%。 -
[C-5-2]1 秒滑动窗口内的比特率不得超过 100%。
如果设备实现支持任何视频编码器并使其可供第三方应用程序使用,并将
MediaFormat.KEY_BITRATE_MODE
设置为BITRATE_MODE_CBR
以便编码器在恒定比特率模式下运行,则编码比特率:-
[C-6-1] 强烈建议 [C-SR-2]在 1 秒的滑动窗口内不得超过目标比特率 15%。
查看修订版
如果设备实现支持 H.263 编码器并将其提供给第三方应用程序,则它们:
- [C-1-1] 必须支持使用基线配置文件级别 45 的 QCIF 分辨率 (176 x 144) 。SQCIF 分辨率是可选的。
应支持所支持的编码器的动态可配置比特率。
查看修订版
如果设备实现支持 H.265 编解码器,则:
- [C-1-1] 必须支持主配置文件级别 3 ,分辨率高达 512 x 512 。
应支持下表所示的高清编码配置文件。- 如果有硬件编码器,强烈建议 [C-SR-1] 支持720 x 480 SD 配置文件和下表所示的 HD 编码配置文件。
5.2.6。 AV1 :新部分
查看修订版
如果设备实现支持 AV1 编解码器,那么它们:
- [C-1-1] 必须支持 Main Profile,包括 8 位和 10 位内容。
[C-1-2] 必须针对下表中支持的分辨率通过
getSupportedFrameRatesFor()
或getSupportedPerformancePoints()
API 发布性能数据,即报告性能数据。[C-1-3] 必须接受 HDR 元数据并将其输出到比特流
如果 AV1 编码器是硬件加速的,那么它:
- [C-2-1] 必须支持最多(含)下表中的 HD1080p 编码配置文件:
标清 高清720p 高清1080p 超高清 视频分辨率 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 3840 x 2160 像素 视频帧率 30 帧/秒 30 帧/秒 30 帧/秒 30 帧/秒 视频比特率 5Mbps 8Mbps 16Mbps 50Mbps 查看修订版
如果设备实现支持 H.263 解码器,则:
- [C-1-1] 必须支持基线配置文件级别 30 (CIF、QCIF 和 SQCIF 分辨率@ 30fps 384kbps)和级别 45 (QCIF 和 SQCIF 分辨率@ 30fps 128kbps) 。
查看修订版
如果设备实现支持 AV1 编解码器,则:- [C-1-1] 必须支持 Profile 0,包括 10 位内容。
如果设备实现支持 AV1 编解码器并使其可供第三方应用程序使用,则它们:
- [C-1-1] 必须支持 Main Profile,包括 8 位和 10 位内容。
如果设备实现通过硬件加速解码器提供对 AV1 编解码器的支持,那么它们:
- [C-2-1] 当
Display.getSupportedModes()
方法报告的高度等于或大于 720p 时,必须能够至少解码下表中的 HD 720p 视频解码配置文件。 - [C-2-2] 当
Display.getSupportedModes()
方法报告的高度等于或大于 1080p 时,必须能够至少解码下表中的高清 1080p 视频解码配置文件。
标清 高清720p 高清1080p 超高清 视频分辨率 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 3840 x 2160 像素 视频帧率 30 帧/秒 30 帧/秒 30 帧/秒 30 帧/秒 视频比特率 5Mbps 8Mbps 16Mbps 50Mbps 如果设备实现通过媒体 API 支持 HDR 配置文件,那么它们:
- [C-3-1] 必须支持从比特流和/或容器中提取和输出 HDR 元数据。
- [C-3-2] 必须在设备屏幕或标准视频输出端口(例如 HDMI)上正确显示 HDR 内容。
查看修订版
如果设备实现声明
android.hardware.microphone
,它们:- 应设置音频输入灵敏度,以便以 90 dB 声压级 (SPL)(在距麦克风旁边
30 厘米的距离处测量)播放的 1000 Hz 正弦音源在 1770 和 1770 范围内产生 RMS 2500 的理想响应。 3530 用于 16 位样本(或 -22.35 db ±3dB 全量程用于浮点/双精度样本),用于记录语音识别音频源的每个麦克风。
- 应设置音频输入灵敏度,以便以 90 dB 声压级 (SPL)(在距麦克风旁边
查看修订版
如果设备实现声明了
android.hardware.audio.output
功能,则:- [C-1-4] 必须支持具有浮点输入和输出的音频效果。
- [C-1-5] 必须确保音频效果支持多个通道,最多可达混音器通道数(也称为 FCC_LIMIT)。
查看修订版
如果设备实现声明
android.hardware.audio.output
,强烈建议满足或超过以下要求:- [C-SR-4] AudioTrack.getTimestamp和
AAudioStream_getTimestamp
返回的输出时间戳精确到 +/- 1 毫秒。
- [C-SR-4] 强烈建议根据
AAudioStream_getTimestamp
返回的输入和输出时间戳计算出的往返延迟在AAUDIO_PERFORMANCE_MODE_NONE
和AAUDIO_PERFORMANCE_MODE_LOW_LATENCY
扬声器、有线和无线耳机的测量往返延迟的 30 毫秒内。
- [C-SR-4] AudioTrack.getTimestamp和
7. 硬件兼容性
查看修订版
Android 包含自动调整应用程序资源和适合设备的 UI 布局的功能,以确保第三方应用程序在
各种硬件配置上良好运行。各种硬件显示和配置。 Android 兼容显示器是一个显示屏,它实现了Android 开发人员 - 屏幕兼容性概述、本节 (7.1) 及其小节中描述的所有行为和 API,以及第 2 节中记录的任何其他设备类型特定行为。这个CDD。在所有第三方 Android 兼容应用程序都可以运行的 Android 兼容显示器上,设备实现必须正确实现这些 API 和行为,如本节中详述。开始新的要求
设备实现:
- [C-0-1] 默认情况下,必须仅将第三方应用呈现到 Android 兼容的显示器上。
本节要求引用的单位定义如下:
- 物理对角线尺寸。显示屏照明部分的两个相对角之间的距离(以英寸为单位)。
每英寸点数 (dpi)密度。 1 英寸的线性水平或垂直跨度所包含的像素数,以每英寸像素数(ppi 或 dpi)表示。在列出dpippi 和 dpi值的地方,水平和垂直 dpi 都必须在列出的范围内。- 长宽比。屏幕较长尺寸与较短尺寸的像素之比。例如,480x854 像素的显示器将为 854/480 = 1.779,或大致为“16:9”。
- 与密度无关的像素 (dp) 。虚拟像素
单位归一化为160 dpi 屏幕,屏幕密度为 160。对于某些密度 d 和像素数量 p,与密度无关的像素数量 dp,计算如下:像素 = dps * (密度/160)dp = (160 / d) * p 。
查看修订版
如果设备实现支持具有
UI_MODE_TYPE_NORMAL
尺寸配置的屏幕,并包含与 Android 兼容的使用带圆角的物理显示器来渲染这些屏幕,则:- [C-1-1] 必须确保每个此类显示器至少满足以下要求之一:
- 圆角半径小于或等于38dp。
当 15 dp x 15 dp 框固定在逻辑显示的每个角时,每个框的至少一个像素在屏幕上可见。
应包括用户切换到带有矩形角的显示模式的能力。
开始新的要求
如果设备实现仅能够进行
NO_KEYS
键盘配置,并且打算报告对UI_MODE_TYPE_NORMAL
ui 模式配置的支持,则它们:- [C-4-1] 布局尺寸(不包括任何显示切口)必须至少为 596 dp x 384 dp 或更大。
如果设备实现包含可折叠的 Android 兼容显示器,或包含多个显示面板之间的折叠铰链并使此类显示器可用于呈现第三方应用程序,则它们:
- [C-2-1] 必须实现最新可用的稳定版本的扩展 API或稳定版本的Sidecar API ,以供Window Manager Jetpack库使用。
如果设备实现包括可折叠的 Android 兼容显示器,或者包括多个显示面板之间的折叠铰链,并且铰链或折叠穿过全屏应用程序窗口,则:
- [C-3-1] 必须通过扩展或 Sidecar API 向应用报告铰链或折叠的位置、边界和状态。
如果设备实现包括一个或多个可折叠的 Android 兼容显示区域,或者包括多个 Android 兼容显示面板区域之间的折叠铰链并使此类显示区域可供应用程序使用,则它们:
- [C-4-1] 必须实现窗口管理器扩展 API 级别的正确版本,如即将发布的文档中所述。
7.1.1.2.屏幕长宽比:已删除
查看修订版
设备实现:
- [C-0-1]
默认情况下,设备实现必须仅报告通过DENSITY_DEVICE_STABLE
API在DisplayMetrics
上列出的 Android 框架密度之一,并且该值必须是每个物理显示器的静态值,且不得随时更改;但是,设备可能会根据用户在初始启动后设置的显示配置更改(例如,显示尺寸)报告不同的任意密度DisplayMetrics.density
密度。
- 设备实现应该定义在数值上最接近屏幕物理密度的标准 Android 框架密度,除非该逻辑密度将报告的屏幕尺寸推至支持的最小值以下。如果在数字上最接近物理密度的标准 Android 框架密度导致屏幕尺寸小于支持的最小兼容屏幕尺寸(320 dp 宽度),则设备实现应该报告下一个最低的标准 Android 框架密度。
开始新的要求
- 应定义在数值上最接近屏幕物理密度的标准 Android 框架密度,或者映射到手持设备的相同等效角度视场测量值的值。
如果设备实现提供了
更改设备显示尺寸的功能,那么它们:- [C-1-1]
不得将显示尺寸缩放为大于DENSITY_DEVICE_STABLE
原生密度的 1.5 倍,或生成小于 320dp(相当于资源限定符 sw320dp)的有效最小屏幕尺寸,以先到者为准。 - [C-1-2]
不得将显示尺寸缩放为小于DENSITY_DEVICE_STABLE
原生密度0.85 倍。
- [C-0-1]
查看修订版
如果设备实现包括对 Vulkan
1.0 或更高版本的支持,则:[C-1-3] 必须为每个枚举的
VkPhysicalDevice
完全实现Vulkan 1.0Vulkan 1.1 API。[C-1-5] 不得枚举应用包外部的库提供的层,也不得提供跟踪或拦截 Vulkan API 的其他方式,除非应用将
android:debuggable
属性设置为true
或将元数据设置为com.android.graphics.injectLayers.enable
设置为true
。
- 应支持
VkPhysicalDeviceProtectedMemoryFeatures
和VK_EXT_global_priority
。
- [C-1-13] 必须满足Android 基准 2021 配置文件指定的要求。
[C-SR-5] 强烈建议支持
VkPhysicalDeviceProtectedMemoryFeatures.protectedMemory
和VK_EXT_global_priority
。[C-SR-6] 强烈建议将
SkiaVk
与 HWUI 结合使用。
如果设备实现包括对 Vulkan 1.1 的支持并声明此处描述的任何 Vulkan 功能标志,则它们:
- [C-SR-7] 强烈建议使
VK_KHR_external_fence_fd
扩展可供第三方应用程序使用,并使应用程序能够将栅栏负载导出到 POSIX 文件描述符以及从 POSIX 文件描述符导入栅栏负载,如此处所述。
查看修订版
如果设备实现有多个生物识别传感器,它们:
[C-7-1] 当生物识别处于锁定状态(即生物识别被禁用,直到用户通过主要身份验证解锁)或有时限锁定(即生物识别被暂时禁用,直到用户等待一定时间间隔)时,必须这样做由于失败的尝试太多,还锁定了较低生物识别类别的所有其他生物识别。在限时锁定的情况下,生物识别验证的退避时间必须是限时锁定中所有生物识别的最大退避时间。
[C-SR-12] 强烈建议,当生物识别处于锁定状态(即,生物识别被禁用,直到用户通过主要身份验证解锁)或有时间限制的锁定(即,生物识别被暂时禁用,直到用户等待一段时间)间隔)由于失败的尝试太多,也锁定同一生物识别类别的所有其他生物识别。在限时锁定的情况下,强烈建议生物识别验证的退避时间为限时锁定中所有生物识别的最大退避时间。
[C-7-2] 必须要求用户进行建议的主要身份验证(例如:PIN、图案、密码),以重置锁定生物识别的锁定计数器。可以允许3 类生物识别技术重置相同或较低类别的锁定生物识别技术的锁定计数器。不得允许2 类或1 类生物识别技术完成任何生物识别技术的重置锁定操作。
如果设备实现希望将生物识别传感器视为1 类(以前称为便利),则:
[C-1-12] 根据Android 生物识别测试协议的测量,每种演示攻击工具 (PAI) 的欺骗和冒名顶替者接受率不得高于 40%。
[C-SR-13] 强烈建议按照Android 生物识别测试协议的测量,每个演示攻击工具 (PAI) 种类的欺骗和冒名顶替者接受率不高于 30%。
[C-SR-14] 强烈建议披露生物识别传感器的生物识别类别以及启用该传感器的相应风险。
[C-SR-17] 强烈建议实现新的 AIDL 接口(例如
IFace.aidl
和IFingerprint.aidl
)。
如果设备实现希望将生物识别传感器视为2 类(以前称为Weak ),则:
- [C-SR-15] 强烈建议按照Android 生物识别测试协议的测量,每种演示攻击工具 (PAI) 的欺骗和冒名顶替者接受率不高于 20%。
- [C-2-3] 必须在 Android 用户或内核空间之外的隔离执行环境(例如可信执行环境 (TEE))中执行生物识别匹配,
或者在具有通往隔离执行环境的安全通道的芯片上或在受保护的环境中执行生物识别匹配满足第 9.17 节要求的虚拟机。 - [C-2-4] 必须对所有可识别数据进行加密和加密身份验证,以便无法在隔离执行环境或具有通往隔离执行环境的安全通道的芯片之外获取、读取或更改这些数据(如实施指南中所述)在 Android 开源项目站点或由虚拟机管理程序控制的受保护虚拟机上,满足第 9.17 节中的要求。
- [C-2-5] 对于基于摄像头的生物识别技术,在进行基于生物识别的身份验证或注册时:
- 必须以某种模式操作相机,以防止相机帧在隔离执行环境或具有到隔离执行环境的安全通道的芯片或由满足第 9.17 节要求的管理程序控制的受保护虚拟机之外被读取或更改。
- 对于 RGB 单摄像头解决方案,摄像头帧可以在隔离执行环境之外读取,以支持注册预览等操作,但仍不得更改。
- [C-2-7] 不得允许在 TEE 上下文之外或由满足第 1 节要求的虚拟机管理程序控制的受保护虚拟机中对可识别生物识别数据或从中派生的任何数据(例如嵌入数据)进行未加密的访问9.17 。在 Android 版本 9 或更早版本上启动的升级设备不能免除 C-2-7。
如果设备实现希望将生物识别传感器视为3 类(以前称为Strong ),则:
- [C-SR-16] 强烈建议按照Android 生物识别测试协议的测量,每种演示攻击工具 (PAI) 的欺骗和冒名顶替者接受率不高于 7%。
7.3.13. IEEE 802.1.15.4(超宽带) :
查看修订版
如果设备实现包括对 802.1.15.4 的支持并向第三方应用程序公开该功能,则它们:
- [C-1-2] 必须报告硬件功能标志
android.hardware.uwb
。 - [C-1-3] 必须支持 AOSP 实现中定义的所有以下配置集( FIRA UCI参数的预定义组合)。
-
CONFIG_ID_1
:FiRa 定义的单播STATIC STS DS-TWR
测距,延迟模式,测距间隔 240 ms。 -
CONFIG_ID_2
:FiRa 定义的一对多STATIC STS DS-TWR
测距,延迟模式,测距间隔 200 ms。典型用例:智能手机与许多智能设备交互。 -
CONFIG_ID_3
:与CONFIG_ID_1
相同,但不报告到达角 (AoA) 数据。 -
CONFIG_ID_4
:与CONFIG_ID_1
相同,但启用了 P-STS 安全模式。 -
CONFIG_ID_5
:与CONFIG_ID_2
相同,但启用了 P-STS 安全模式。 -
CONFIG_ID_6
:与CONFIG_ID_3
相同,但启用了 P-STS 安全模式。 -
CONFIG_ID_7
:与CONFIG_ID_2
相同,但启用了 P-STS 单独受控者按键模式。
-
- [C-1-4] 必须向用户提供可供性,以允许用户切换 UWB 无线电的开/关状态。
- [C-1-5] 必须强制要求使用 UWB 无线电的应用持有
UWB_RANGING
权限(位于NEARBY_DEVICES
权限组下)。
- [C-1-2] 必须报告硬件功能标志
查看修订版
Android API 和本文档中使用的“电话”特指与拨打语音呼叫和发送 SMS 消息或通过移动(例如 GSM、CDMA、LTE、NR)GSM 或 CDMA 网络建立移动数据相关的硬件。支持“电话”的设备可以选择提供部分或全部适合该产品的呼叫、消息和数据服务。
通过 GSM 或 CDMA 网络。虽然这些语音呼叫可能会或可能不会进行数据包交换,但出于 Android 的目的,它们被视为独立于可能使用同一网络实现的任何数据连接。换句话说,Android“电话”功能和 API 特指语音通话和短信。例如,无法拨打电话或发送/接收 SMS 消息的设备实现不被视为电话设备,无论它们是否使用蜂窝网络进行数据连接。查看修订版
如果设备实现包括对 802.11 的支持并向第三方应用程序公开该功能,则它们:
- [C-1-4] 必须支持多播 DNS (mDNS),并且不得在任何操作时间(包括屏幕不处于活动状态时)过滤 mDNS 数据包(224.0.0.251或 ff02::fb ),除非丢弃或过滤这些数据包对于保持在适用于目标市场的监管要求所要求的功耗范围内是必要的。
对于 Android TV 设备实现,即使处于待机电源状态也是如此。
- [C-1-4] 必须支持多播 DNS (mDNS),并且不得在任何操作时间(包括屏幕不处于活动状态时)过滤 mDNS 数据包(224.0.0.251或 ff02::fb ),除非丢弃或过滤这些数据包对于保持在适用于目标市场的监管要求所要求的功耗范围内是必要的。
查看修订版
如果设备实现声明 FEATURE_BLUETOOTH_LE,则:
- [C-SR-2] 强烈建议测量和补偿 Rx 偏移,以确保距以
ADVERTISE_TX_POWER_HIGH
传输的参考设备 1m 距离处的中值 BLE RSSI 为 -60dBm +/-10 dB,其中设备定向为:在“平行平面”上,屏幕面向同一方向。 - [C-SR-3] 强烈建议测量和补偿 Tx 偏移,以确保当从位于 1m 距离的参考设备进行扫描并以
ADVERTISE_TX_POWER_HIGH
进行传输(其中设备定向)时,中位 BLE RSSI 为 -60dBm +/-10 dB这样它们就位于“平行平面”上,屏幕面向同一方向。
- [C-10-3] 必须测量并补偿 Rx 偏移,以确保距离以
ADVERTISE_TX_POWER_HIGH
进行传输的参考设备 1m 处,BLE RSSI 中位数为 -55dBm +/-10 dB。 - [C-10-4] 必须测量并补偿 Tx 偏移,以确保从位于 1m 距离的参考设备进行扫描并以
ADVERTISE_TX_POWER_HIGH
进行传输时,BLE RSSI 中位数为 -55dBm +/-10 dB。
如果设备实现支持蓝牙版本 5.0,那么它们:
- [C-SR-4] 强烈建议为以下方面提供支持:
- LE 2M 物理层
- LE 编解码器 PHY
- LE 广告扩展
- 定期广告
- 至少10组广告
- 至少 8 个 LE 并发连接。每个连接都可以处于任一连接拓扑角色中。
- LE 链路层隐私
- “解析列表”大小至少为 8 个条目
- [C-SR-2] 强烈建议测量和补偿 Rx 偏移,以确保距以
查看修订版
- [C-1-7] 必须确保距离参考设备 1m 处的距离测量值的中位数在 [0.75m, 1.25m] 范围内,其中地面真实距离是从 DUT 的顶部边缘测量的。
面朝上并倾斜 45 度。
- [C-1-7] 必须确保距离参考设备 1m 处的距离测量值的中位数在 [0.75m, 1.25m] 范围内,其中地面真实距离是从 DUT 的顶部边缘测量的。
查看修订版
后置摄像头是位于设备与显示屏相对的一侧的摄像头;也就是说,它像传统相机一样对设备远端的场景进行成像。
后置摄像头是面向世界的摄像头,可以像传统摄像头一样对设备远端的场景进行成像;在手持设备上,这是位于设备与显示屏相对的一侧的摄像头。
查看修订版
前置摄像头是与显示屏位于设备同一侧的摄像头;也就是说,通常用于对用户进行成像的相机,例如用于视频会议和类似应用。
前置摄像头是面向用户的摄像头,通常用于对用户进行成像,例如用于视频会议和类似应用;在手持设备上,这是位于设备与显示屏同一侧的摄像头。
查看修订版
外部摄像头是可以随时物理连接到设备实现或从设备实现分离并且可以面向任何方向的摄像头;例如USB摄像头。
查看修订版
设备实现必须为所有可用相机的相机相关 API 实现以下行为。设备实现:
- [C-SR-1] 对于具有多个靠近且面向同一方向的 RGB 摄像头的设备,强烈建议支持列出功能
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
的逻辑摄像头设备,该设备由面向该方向的所有 RGB 摄像头组成作为物理子设备。
- [C-SR-1] 对于具有多个靠近且面向同一方向的 RGB 摄像头的设备,强烈建议支持列出功能
查看修订版
满足以下所有标准的设备可免除上述要求:
- 用户无法旋转的设备实现,例如汽车设备。
查看修订版
旨在手持或佩戴的设备可能包括通用触觉执行器,可用于包括通过铃声、警报、通知以及一般触摸反馈引起注意等目的的应用程序。
如果设备实现不包括此类通用触觉执行器,则它们:
- [7.10/C] 必须为
Vibrator.hasVibrator()
返回 false。
如果设备实现确实包含至少一个这样的通用触觉执行器,那么它们:
- [C-1-1] 必须为
Vibrator.hasVibrator()
返回 true。 - 不应使用偏心旋转质量 (ERM) 触觉执行器(振动器)。
- 应在
android.view.HapticFeedbackConstants
中实现清晰触觉的所有公共常量,即(CLOCK_TICK
、CONTEXT_CLICK
、KEYBOARD_PRESS
、KEYBOARD_RELEASE
、KEYBOARD_TAP
、LONG_PRESS
、TEXT_HANDLE_MOVE
、VIRTUAL_KEY
、VIRTUAL_KEY_RELEASE
、CONFIRM
、REJECT
、GESTURE_START
和GESTURE_END
)。 - 应实现
android.os.VibrationEffect
中用于清晰触觉的所有公共常量(即EFFECT_TICK
、EFFECT_CLICK
、EFFECT_HEAVY_CLICK
和EFFECT_DOUBLE_CLICK
)以及android.os.VibrationEffect.Composition
中用于丰富触觉的所有可行公共PRIMITIVE_*
常量(即CLICK
、TICK
、LOW_TICK
)QUICK_FALL
、QUICK_RISE
、SLOW_RISE
、SPIN
、THUD
)。其中一些原语(例如LOW_TICK
和SPIN
可能仅在振动器可以支持相对较低的频率时才可行。 - 应遵循将
android.view.HapticFeedbackConstants
中的公共常量映射到推荐的android.os.VibrationEffect
常量的指南,并具有相应的幅度关系。 - 应使用这些链接的触觉常量映射。
- 应遵循
createOneShot()
和createWaveform()
API 的质量评估。 - 应验证公共
android.os.Vibrator.hasAmplitudeControl()
API 的结果是否正确反映了其振动器的功能。 - 应通过运行
android.os.Vibrator.hasAmplitudeControl()
来验证幅度可扩展性的功能。
如果设备实现遵循触觉常量映射,则它们:
- 应通过运行
android.os.Vibrator.areAllEffectsSupported()
和android.os.Vibrator.arePrimitivesSupported()
API 来验证实现状态。 - 应该对触觉常数进行质量评估。
- 如果需要,应该验证和更新不支持的原语的后备配置,如常量实现指南中所述。
- 应提供后备支持以减轻此处所述的失败风险。
有关设备特定要求,请参阅第2.2.1节。
- [7.10/C] 必须为
9. 安全模型兼容性
查看修订版
设备实现:
- [C-0-4] 两个用户界面必须有且只有一种实现。
如果设备实现预安装了包含任何System UI Intelligence 、 System Ambient Audio Intelligence 、 System Audio Intelligence 、 System notification Intelligence 、 System Text Intelligence或System Visual Intelligence角色的任何包,则这些包:
- [C-4-1] 必须满足
“9.8.6 内容捕获”、“9.8.6 操作系统级别和环境数据以及 9.8.15 沙盒 API 实现”部分中概述的设备实现的所有要求。
- [C-4-2] 不得拥有 android.permission.INTERNET 权限。这比第 9.8.6 节中列出的强烈建议更严格。
- [C-4-3] 不得绑定到其他应用,以下系统应用除外:蓝牙、通讯录、媒体、电话、SystemUI 和提供 Internet API 的组件。这比第 9.8.6 节中列出的强烈建议更严格。
如果设备实现包含支持
VoiceInteractionService
默认应用程序,则它们:- [C-5-1] 不得将
ACCESS_FINE_LOCATION
授予该应用的默认值。
查看修订版
如果设备实现创建了上面讨论的附加用户配置文件,那么它们:
- [C-4-5] 当双实例应用程序图标呈现给用户时,必须在视觉上区分这些图标。
- [C-4-6] 必须向用户提供删除整个克隆配置文件数据的功能。
- [C-4-7] 当用户选择删除整个克隆配置文件数据时,必须卸载所有克隆应用、删除私有应用数据目录及其内容,并删除克隆配置文件数据。
- 当删除最后一个克隆应用程序时,应提示用户删除整个克隆配置文件数据。
- [C-4-8] 必须通知用户,卸载克隆应用时,应用数据将被删除,或者向用户提供一个选项,以在从设备上卸载应用时保留应用数据。
- [C-4-9] 当用户在卸载期间选择删除数据时,必须删除私有应用数据目录及其内容。
[C-4-1] 必须允许设备上主用户的应用程序处理源自附加配置文件的以下意图:
-
Intent.ACTION_VIEW
-
Intent.ACTION_SENDTO
-
Intent.ACTION_SEND
-
Intent.ACTION_EDIT
-
Intent.ACTION_INSERT
-
Intent.ACTION_INSERT_OR_EDIT
-
Intent.ACTION_SEND_MULTIPLE
-
Intent.ACTION_PICK
-
Intent.ACTION_GET_CONTENT
-
MediaStore.ACTION_IMAGE_CAPTURE
-
MediaStore.ACTION_VIDEO_CAPTURE
-
[C-4-2] 必须将应用于设备主用户的所有设备策略用户限制和选定的非用户限制(如下所列)继承到此附加用户配置文件。
[C-4-3] 必须仅允许通过以下意图写入此附加配置文件中的联系人:
[C-4-4] 不得为此附加用户配置文件中运行的应用程序运行联系人同步。
- [C-4-14] 在此附加配置文件中运行的应用必须具有单独的权限和存储管理
- [C-4-5] 必须只允许附加配置文件中具有启动器活动的应用访问父用户配置文件已可访问的联系人。
查看修订版
内存安全技术是一种在使用
android:memtagMode
清单选项的应用程序中以高概率 (> 90%) 至少减少以下几类错误的技术:- 堆缓冲区溢出
- 免费后使用
- 双重免费
- 狂野释放(没有非 malloc 指针)
设备实现:
- [C-SR-15] 强烈建议设置
ro.arm64.memtag.bootctl_supported
。
如果设备实现将系统属性
ro.arm64.memtag.bootctl_supported
设置为 true,则:[C-3-1] 必须允许系统属性
arm64.memtag.bootctl
接受以下值的逗号分隔列表,并在下次重新启动时应用所需的效果:-
memtag
:启用了上面定义的内存安全技术 memtag-once
:上面定义的内存安全技术暂时启用,并在下次重新启动时自动禁用memtag-off
:禁用上面定义的内存安全技术
-
[C-3-2] 必须允许 shell 用户设置
arm64.memtag.bootctl
。[C-3-3] 必须允许任何进程读取
arm64.memtag.bootctl
。[C-3-4] 必须在启动时将
arm64.memtag.bootctl
设置为当前请求的状态,如果设备实现允许在不更改系统属性的情况下修改状态,则还必须更新该属性。[C-SR-16] 强烈建议显示设置 memtag-once 并重新启动设备的开发人员设置。有了兼容的引导加载程序,Android开源项目通过MTE引导加载程序协议满足上述要求。
- [C-SR-17] 强烈建议在“安全设置”菜单中显示一项允许用户启用
memtag
设置。
查看修订版
设备实现:
- [C-0-2] 必须显示用户警告并获得明确的用户同意,以允许捕获用户屏幕上显示的任何敏感信息(启用后,每次会话捕获时都
包含与 AOSP 完全相同的消息)屏幕投射或屏幕录制是通过MediaProjection.createVirtualDisplay()
、VirtualDeviceManager.createVirtualDisplay()
或专有 API启动的。不得向用户提供禁用未来显示用户同意的功能。
[C-SR-1] 强烈建议显示用户警告,该警告与 AOSP 中实现的消息完全相同,但只要该消息明确警告用户用户屏幕上的任何敏感信息已被捕获,就可以进行更改。
[C-0-4] 不得向用户提供禁止未来提示用户同意捕获屏幕的提示,除非会话是由用户允许与 android.app
associate()
的系统应用启动的android.app.role.COMPANION_DEVICE_APP_STREAMING
或android.app.role.COMPANION_DEVICE_NEARBY_DEVICE_STREAMING
设备配置文件。
- [C-0-2] 必须显示用户警告并获得明确的用户同意,以允许捕获用户屏幕上显示的任何敏感信息(启用后,每次会话捕获时都
9.8.6。操作系统级和环境数据:此部分已从内容捕获和应用程序搜索重命名为操作系统级和环境数据。
查看修订版
Android 通过系统 API
,支持设备实现的机制来捕获ContentCaptureService
、AugmentedAutofillService
、AppSearchGlobalManager.query
或其他专有方式应用程序与用户敏感数据之间的以下应用程序数据交互:- 通过
AugmentedAutofillService
发送到系统的任何屏幕或其他数据。 - 可通过
Content Capture
API 访问的任何屏幕或其他数据。 - 可通过
FieldClassificationService
API 访问的任何屏幕或其他数据 - 通过
AppSearchManager
API 传递到系统并通过AppSearchGlobalManager.query
访问的任何应用程序数据。
- 应用程序通过
Content Capture
API 或AppSearchManager
API(具有类似功能的 Android 和专有 API)向系统提供的任何其他事件。
- 语音识别器实现使用
SpeechRecognizer#onDeviceSpeechRecognizer()
获得的音频数据。 - 通过
AudioRecord
、SoundTrigger
或其他音频 API 在后台(连续)获取音频数据,并且不会产生用户可见的指示器 - 通过 CameraManager 或其他相机 API 在后台(连续)获取相机数据,并且不会产生用户可见的指示器
如果设备实现捕获上述任何数据,它们:
[C-1-3] 必须仅使用隐私保护机制发送所有此类数据
并注销设备,除非每次共享数据时均获得用户明确同意。隐私保护机制被定义为“那些只允许进行聚合分析并防止将记录的事件或派生结果与单个用户相匹配的机制”,以防止任何每用户数据被内省(例如,使用差分隐私技术来实现,例如RAPPOR
)。[C-1-5] 不得与不遵循当前部分(9.8.6
内容捕获操作系统级别和环境数据)中概述的要求的其他操作系统组件共享此类数据,除非每次都得到用户的明确同意共享。除非作为Android SDK API(AmbientContext
,HotwordDetectionService
)构建此类功能。[C-1-6]必须提供用户负担能力来删除此类数据,以使
实现或专有方式收集ContentCaptureService
如果数据以设备上的任何形式存储时。如果用户选择删除数据,则必须删除所有收集的历史数据。
- 强烈建议[C-SR-3]使用Android SDK API或类似的OEM拥有的开源存储库来实施;和 /或在沙盒实现中执行(请参阅9.8.15沙盒API实现)。
Android,通过
SpeechRecognizer#onDeviceSpeechRecognizer()
提供了在设备上执行语音识别的能力,而无需涉及网络。任何实施在设备上的语音识别器都必须遵循本节中概述的政策。- 通过
请参阅修订
如果设备实现声明
android.hardware.telephony
功能标志,则它们:- [C-1-4]使用
BUGREPORT_MODE_TELEPHONY
生成的报告至少必须包含以下信息:- 订阅
SubscriptionManagerService
转储
- 订阅
- [C-1-4]使用
9.8.14。凭据管理器:已删除
9.8.15。沙盒API实现:新部分
请参阅修订
Android通过一组委托API提供了处理安全OS级别和环境数据的机制。此类处理可以委派给具有特权访问权限和降低通信功能的预装APK,称为沙盒API实现。
任何沙盒API实现:
- [C-0-1]不得要求互联网许可。
- [C-0-2]必须仅通过使用隐私机制或间接通过Android SDK API来支持的结构化API访问Internet。隐私保护机制被定义为“只允许总体分析并防止已记录事件或向单个用户派生结果匹配的机制”,以防止任何用户数据具有内省(例如,使用诸如差异隐私技术(例如)拉牌)。
- [C-0-3]必须将服务与其他系统组件分开(例如不绑定服务或共享过程ID),除非以下内容:
- 电话,联系人,系统UI和媒体
- [C-0-4]不得允许用户用用户安装的应用程序或服务替换服务
- [C-0-5]只能允许预装的服务捕获此类数据。除非替换功能内置在AOSP中(例如,数字助理应用程序)。
- [C-0-6]除了预装的服务机制外,不得允许任何应用程序能够捕获此类数据。除非使用Android SDK API实现此类捕获功能。
- [C-0-7]必须提供用户负担来禁用服务。
- [C-0-8]不得忽略用户负担来管理服务由服务持有的Android权限,并遵循第9.1节中所述的Android权限模型。允许。
9.8.16。连续音频和相机数据:新部分
请参阅修订
除了在9.8.2录制中概述的要求,9.8.6 OS级别和环境数据以及9.8.15沙盒API实现之外,还可以利用通过AudioreCord,Soundtrigger或其他AUDIO APIS在后台(连续)获得的音频数据或通过摄影师或其他相机API在背景(连续)中获得的相机数据:
- [C-0-1]必须执行相应的指标(根据第9.8.2节的记录)执行相应的指标(相机和/或麦克风),除非:
- 强烈建议[C-SR-1]要求使用此类数据的每个功能要求用户同意,默认情况下被禁用。
- [C-SR-2]强烈建议采用相同的治疗方法(即遵循9.8.2记录中概述的限制,9.8.6 OS级别和环境数据,9.8.15 Sandboxed API实现,以及9.8.16相机数据)来自来自远程可穿戴设备的相机数据。
如果相机数据是从远程可穿戴设备提供的,并以Android OS外的未加密形式访问,沙盒实现或由
WearableSensingManager
构建的沙盒功能,则它们:- [C-1-1]必须向远程可穿戴设备指示以在那里显示其他指示器。
如果设备提供了与没有分配的关键字的数字助手应用程序互动的能力(要么处理通用用户查询,要么通过摄像机分析用户的存在):
- [C-2-1]必须确保由持有
android.app.role.ASSISTANT
角色的软件包提供此类实施。 - [C-2-2]必须确保此类实施利用
HotwordDetectionService
和/或VisualQueryDetectionService
Android API。
9.8.17。遥测:新部分
请参阅修订
使用StatsLog API存储Android存储系统和应用程序日志。这些日志是通过StatsManager API管理的,可以通过特权系统应用程序使用。
StatsManager还提供了一种方法,可以从具有隐私保存机制的设备中收集归类为隐私敏感的数据。特别是,
StatsManager::query
API提供了查询统计数据中定义的限制度量类别的能力。从StatsManager那里进行的任何实施查询和收集限制指标:
- [C-0-1]必须是设备上的唯一应用程序/实现,并保留
READ_RESTRICTED_STATS
许可。 - [C-0-2]只能使用隐私保护机制发送遥测数据和设备的日志。隐私保护机制被定义为“只允许总体分析并防止已记录事件或向单个用户派生结果匹配的机制”,以防止任何用户数据具有内省(例如,使用诸如差异隐私技术(例如)拉牌)。
- [C-0-3]不得将此类数据与设备上的任何用户身份(例如帐户)相关联。
- [C-0-4]不得与其他OS组件共享此类数据,这些组件不遵循当前部分中概述的要求(9.8.17隐私权遥测)。
- [C-0-5]必须提供用户负担能力,以启用/禁用隐私保护遥测,使用和共享。
- [C-0-6]必须提供用户负担来删除此类数据,以使实施将收集数据以任何形式存储在设备上。如果用户选择删除数据,则必须删除当前存储在设备上的所有数据。
- [C-0-7]必须在开源存储库中披露潜在的隐私协议实施。
- [C-0-8]必须在本节中执行数据出口策略,以在StatsLog中定义的有限度量类别中收集数据。
- [C-0-1]必须是设备上的唯一应用程序/实现,并保留
请参阅修订
设备实现如果设备实现能够按页面验证文件内容,则它们:
[
C-0-3C-2-1 ]在不阅读整个文件的情况下,支持对信任键的密码验证文件内容。[
C-0-4C-2-2 ]当上面的[C-2-1]未验证受信任的密钥的读取内容时,不得允许受保护文件上的读取请求成功。
- [C-2-4]必须在O(1)中返回启用文件中的文件校验和。
请参阅修订
Android密钥库系统允许应用程序开发人员将加密密钥存储在容器中,并通过钥匙串API或密钥库API在加密操作中使用它们。设备实现:
- [C-0-3]必须限制失败的主要身份验证尝试的数量。
- 强烈建议[C-SR-2]实现20次失败的主要身份验证尝试的上限,如果用户同意并选择了该功能,请在超过失败的主要身份验证尝试的限制后执行“出厂数据重置”。
如果设备实现添加或修改身份验证方法以解锁锁定屏幕,如果基于已知秘密并使用新的身份验证方法作为锁定屏幕的安全方法,则:
- [C-SR-3]强烈建议使用销钉至少6位数字或等效的20位熵。
- [C-2-1]长度小于6位的销钉不得在没有用户交互的情况下自动进入,以免揭示销钉长度。
请参阅修订
设备实现:
- [C-0-1]必须限制失败的主要身份验证尝试的数量。
- 强烈建议[C-SR-5]实现20次失败的主要身份验证尝试的上限,如果用户同意并选择了该功能,则在超过失败的主要身份验证尝试的限制后执行“出厂数据重置”。
如果设备实现将数值PIN设置为推荐的主要身份验证方法,则:
- [C-SR-6]强烈建议使用PIN至少6位数字或等效的20位熵。
- [C-SR-7]强烈建议使用小于6位的长度小于6位的引脚,以免在没有用户交互的情况下自动进入,以避免揭示销钉长度。
如果设备实现具有安全锁定屏幕并包含一个或多个实现
TrustAgentService
系统 API 的信任代理,则它们:[C-7-8]对于建议的主要身份验证之一(例如:PIN,PIN,模式,密码)方法,必须对用户挑战至少每72小时或更少一次,除非用户的安全性(例如驱动程序分心)忧虑。如果设备实现允许应用程序创建辅助虚拟显示和支持相关的输入事件,例如通过VirtualDeviceManager ,并且显示器未用Virtual_display_flag_secure标记显示,则它们:
[C-13-10]必须禁用从虚拟设备启动的应用程序的安装。请参阅修订
如果设备实现了对Android虚拟化框架API(
android.system.virtualmachine.*
)的支持,则Android主机:- [C-1-1]必须支持
android.system.virtualmachine
软件包定义的所有API。 - [C-1-2]不得修改保护虚拟机(PVM)管理的Android Selinux和权限模型。
- [C-1-3]不得修改,忽略或替换上游Android开源项目(AOSP)中提供的系统/隔离中存在的Neverallow规则,并且必须使用所有Neverallow规则进行编译。
- [C-1-4]必须只允许平台签名的代码和特权应用程序
不得允许不信任的代码(例如3P应用程序)来创建并运行受保护的虚拟机PVM 。注意:这可能会改变未来的Android版本。
- [C-1-5]不得允许
受保护的虚拟机PVM执行不属于出厂图像或其更新的代码。不得在受保护的虚拟机中运行任何未经Android验证的启动(例如从Internet下载的文件或Sidelodeed下载的文件)。
- [C-1-5]必须仅允许非驱动的PVM从出厂图像或其平台更新中执行代码,该更新还包括对特权应用程序的任何更新。
如果设备实现了对Android虚拟化框架API(
android.system.virtualmachine.*
)的支持,则任何受保护的虚拟机PVM实例:- [C-2-1]必须能够运行
受保护的虚拟机PVM中虚拟化顶点中可用的所有操作系统。 - [C-2-2]不得允许
受保护的虚拟机PVM运行设备实现者或OS供应商未签名的操作系统。 - [C-2-3]不得允许
受保护的虚拟机PVM以代码执行数据(例如Selinux Neverallow execmem)。
- [C-2-4]不得修改,省略或替换上游Android开源项目(AOSP)中提供的系统/Sepolicy/Microdroid中存在的Neverallow规则。
- [C-2-5]即使对于非微生物类功能系统,也必须实施
受保护的虚拟机PVM防御力中的防御(例如,PVMS的SELINUX)。 - [C-2-6]必须确保PVM失败
固件拒绝启动,如果无法验证VM无法验证的初始图像。验证必须在VM内完成。 - [C-2-7]必须确保PVM失败
固件拒绝启动,如果Instance.img的完整性受到损害。
如果该设备实现了对Android虚拟化框架API(
android.system.virtualmachine.*
)的支持,则为管理程序:- [C-3-1]必须确保仅由VM(PVM或主机VM)拥有的内存页仅适用于虚拟机身或管理程序,而不是由其他虚拟机(不受保护或不受保护的)访问。
除非页面所有者明确共享,否则不得允许任何PVM访问属于另一个实体的页面(即其他PVM或管理器)。这包括主机VM。这适用于CPU和DMA访问。 - [C-3-2]在PVM使用并将其返回到主机之前,必须擦除该页面(例如PVM被销毁)。
- 强烈建议[C-
3-3SR-1 ]确保必须在PVM中的任何代码之前加载和执行PVM固件。 - [C-3-4]必须确保每个VM衍生出
{引导证书链(BCC)和提供给PVM实例的复合设备标识符(CDIS)的每个VM秘密,只能由该特定的VM实例衍生而来,并在工厂重置和OTA。
如果该设备实现了对Android虚拟化框架API的支持,则在所有领域:
- [C-4-1]不得向允许绕过Android安全模型的PVM提供功能。
如果设备实现了对Android虚拟化框架API的支持,则:
- [C-5-1]必须能够支持孤立的汇编,但在
ART运行时更新的设备装运上可能会禁用隔离的汇编功能。
如果设备实现了对Android虚拟化框架API的支持,则用于密钥管理:
- [C-6-1]即使在未锁定的设备上,也必须在用户无法修改的一点上扎根骰子链。 (以确保不会被欺骗)。
- 强烈建议[C- SR-2
6-2]使用骰子作为每vm秘密推导机制。必须正确执行骰子,即提供正确的值。
- [C-1-1]必须支持