Android 兼容性定义文档更新日志

Android 14

2023 年 11 月 20 日

2. 设备类型

  • 2.2.1. 硬件

    查看修订版本

    如果手持设备实现声明支持任何 64 位 ABI(无论是否支持任何 32 位 ABI),则:

  • 2.2.7.2. 摄像头

    查看修订版本

    • [7.5/H-1-13] 如有多个后置 RGB 摄像头,后置主摄像头必须支持 LOGICAL_MULTI_CAMERA 功能。

  • 2.3.2. 多媒体

    查看修订版本

    • [5.8/T-0-1] 必须将 HDMI 输出模式设置为所选 SDR 或 HDR 格式的最高分辨率(该格式适用于外部显示屏的 50 Hz 或 60 Hz 刷新率)。

      必须将 HDMI 输出模式设置为选择 50 Hz 或 60 Hz 刷新率可支持的最高分辨率。

  • 2.4.5. 安全模型

    查看修订版本

    • [9/W-0-1] 必须声明 android.hardware.security.model.compatible feature

6. 开发者工具和选项兼容性

  • 6.1. 开发者工具

    查看修订版本

    • [C-0-12] 必须将 LMK_KILL_OCCURRED_FIELD_NUMBER Atom 写入

    查看修订版本

    • [C-0-13] 必须实现 shell 命令 dumpsys gpu --gpuwork 以显示

9. 安全模型兼容性

  • 9.7. 安全功能

    查看修订版本

    如果设备实现使用能够支持 SELinux 的 Linux 内核,则:

    查看修订版本

    如果设备实现使用 Linux 以外的内核,或者使用不含 SELinux 的 Linux,则:

2023 年 10 月 4 日

2. 设备类型

  • 2.2. 手持设备相关要求

    查看修订版本

    满足以下所有条件的 Android 设备实现可归类为手持设备:

    • 屏幕的物理对角线尺寸介于 4 英寸3.3 英寸(对于搭载 API 级别 29 或更低级别的设备实现,则为 2.5 英寸)到 8 英寸之间。

    新要求开始

    • 具有触摸屏输入界面。

  • 2.2.1. 硬件

    查看修订版本

    手持设备实现:

    • [7.1.1.1/H-0-1] 必须具有至少一个满足本文档中所述的全部要求的 Android 兼容屏幕。短边尺寸至少为 2.2 英寸,长边尺寸至少为 3.4 英寸的屏幕。

    如果手持设备实现支持软件屏幕旋转,则:

    • [7.1.1.1/H-1-1]* 必须使提供给第三方应用的逻辑屏幕的短边尺寸至少为 5.1 厘米(2 英寸),长边尺寸至少为 6.9 厘米(2.7 英寸)。 搭载 Android API 级别 29 或更低版本的设备可以免于遵守此要求。

    如果手持设备实现不支持软件屏幕旋转,则:

    • [7.1.1.1/H-2-1]* 提供给第三方应用的逻辑屏幕的短边尺寸必须至少为 2.7 英寸。搭载 Android API 级别 29 或更低版本的设备可以免于遵守此要求。

    新要求开始

    • [7.1.1.1/H-0-3]* 必须将提供给第三方应用的每个 UI_MODE_NORMAL 屏幕映射到一个无遮挡的实体屏幕区域,该区域的短边至少为 2.2 英寸,长边至少为 3.4 英寸。

    • [7.1.1.3/H-0-1]* 必须将 DENSITY_DEVICE_STABLE 的值设置为 92% 或大于相应屏幕的实际物理密度。

    如果手持设备实现声明 android.hardware.audio.outputandroid.hardware.microphone,则:

    • [5.6/H-1-1] 在以下数据路径上的 5 次测量中,平均连续往返延迟时间不得超过 300 毫秒,平均绝对偏差低于 30 毫秒:“扬声器到麦克风”、3.5 毫米环回适配器(如果支持)、USB 环回(如果支持)。

    • [5.6/H-1-2] 在扬声器到麦克风数据路径上的至少 5 次测量中,平均点按与发声间延迟时间不得超过 300 毫秒。

    如果手持设备实现包含至少一个触感致动器,则:

    如果手持设备实现包含至少一个通用 7.10 线性共振致动器,则:

    • [7.10/H] 应将致动器放置在通常手持或触摸设备的位置附近。

    • [7.10/H] 应沿设备的自然纵向屏幕方向的 X 轴(左右)移动触感反馈致动器。

    如果手持设备实现包含通用触感反馈致动器(即 X 轴线性共振致动器 [LRA]),则:

    • [7.10/H] 应将 X 轴 LRA 的共振频率设置为低于 200 Hz。

  • 2.2.2. 多媒体

    查看修订版本

    手持设备实现必须支持以下视频编码格式,并使其可供第三方应用使用:

    • [5.2/H-0-3] AV1

    手持设备实现必须支持以下视频解码格式,并使其可供第三方应用使用:

    • [5.3/H-0-6] AV1

  • 2.2.3. 软件

    查看修订版本

    如果设备实现包含“最近用过”功能导航键(第 7.2.3 节中对此进行了详细说明),并且要更改该界面,则:

    • [3.8.3/H-1-1] 必须实现屏幕固定行为,并向用户提供用于开启/关闭该功能的设置菜单。

    如果手持设备实现支持 ControlsProviderService API 和 Control API 并允许第三方应用发布设备控制器,则:

    如果设备实现允许用户拨打任何类型的电话,则:

  • 2.2.4. 性能和功耗

    查看修订版本

    手持设备实现:

    • [8.5/H-0-1] 必须在“设置”菜单中提供一种方式,让用户能够查看含有处于活动状态的前台服务或用户发起作业的所有应用,包括其中每项服务自启动以来的时长(如 SDK 文档中所述)。并且能够停止在运行前台服务或用户发起作业的应用。能够停止在运行前台服务的应用,并显示含有处于活动状态的前台服务的所有应用,以及其中每项服务自启动以来的时长(如 SDK 文档中所述)。
      • SDK 文档中所述,某些应用可免于在此类用户功能中停止或列出。

    • [8.5/H-0-2] 必须提供一种方式,让用户能够停止在运行前台服务或用户发起作业的应用。

  • 2.2.5. 安全模型

    查看修订版本

    如果设备实现声明支持 android.hardware.telephony,则:

    • [9.5/H-1-1] 不得将 UserManager.isHeadlessSystemUserMode 设置为 true

    如果设备实现包含安全锁定屏幕,并且包含一个或多个实现 TrustAgentService 系统 API 的可信代理,则:

    • [9.11.1/H-1-1] 必须至少每隔 72 小时要求用户通过建议的主要身份验证方法之一(例如 PIN 码、图案、密码)验证身份。

    如果手持设备实现将 UserManager.isHeadlessSystemUserMode 设置为 true,则:

    • [9.5/H-4-1] 不得支持 eUICC,也不得支持具有通话功能的 eSIM 卡。
    • [9.5/H-4-2] 不得声明支持 android.hardware.telephony

    如果手持设备实现支持系统 API HotwordDetectionService 或其他启动指令检测机制,而无需指示麦克风使用权限指示,则:

    • [9.8/H-1-1] 必须确保启动指令检测服务只能向系统、ContentCaptureServiceSpeechRecognizer#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] 当设备检测到用户有意与数字助理应用互动时(例如通过摄像头检测用户活跃状态),必须在系统界面中显示用户通知。
    • [9.8/H-3-4] 在检测到用户查询后,必须立即显示麦克风指示标志,并在界面中显示检测到的用户查询。
    • [9.8/H-3-5] 不得允许用户可安装的应用提供可视化查询检测服务。

  • 2.2.7.1. 媒体

    查看修订版本

    如果手持设备实现针对 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 返回 android.os.Build.VERSION_CODES.T,则:

    新要求开始

    如果手持设备实现针对 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 或更高版本)采用任何编解码器组合形式并行运行,其中 3 个会话采用 1080p@30fps 分辨率,3 个会话采用 4K@30fps 分辨率,AV1 除外。AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 6 个分辨率为 1080p30fps 的实例。
    • [5.1/H-1-3] 必须通过 CodecCapabilities.getMaxSupportedInstances()VideoCapabilities.getSupportedPerformancePoints() 方法通告可以采用任何编解码器组合形式并行运行的硬件视频编码器会话的数量上限。
    • [5.1/H-1-4] 必须支持 6 个 8 位 (SDR) 硬件视频编码器会话实例(AVC、HEVC、VP9、AV1 或更高版本)采用任何编解码器组合形式并行运行,其中 4 个会话采用 1080p@30fps 分辨率,2 个会话采用 4K@30fps 分辨率,AV1 除外。AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 6 个分辨率为 1080p30fps 的实例。
    • [5.1/H-1-5] 必须通过 CodecCapabilities.getMaxSupportedInstances()VideoCapabilities.getSupportedPerformancePoints() 方法通告可以采用任何编解码器组合形式并行运行的硬件视频编码器和解码器会话的数量上限。
    • [5.1/H-1-6] 必须支持 6 个 8 位 (SDR) 硬件视频解码器和硬件视频编码器会话实例(AVC、HEVC、VP9、AV1 或更高版本)采用任何编解码器组合形式并行运行,其中 3 个会话采用 4K@30fps 分辨率(AV1 除外),最多有 2 个是编码器会话,3 个会话采用 1080p 分辨率。 AV1 编解码器仅需要支持 1080p 分辨率,但仍需要支持 6 个分辨率为 1080p30fps 的实例。
    • [5.1/H-1-19] 必须支持 3 个 10 位 (HDR) 硬件视频解码器和硬件视频编码器会话实例(AVC、HEVC、VP9、AV1 或更高版本)采用任何编解码器组合形式并行运行,并且均采用 4K@30fps 分辨率(AV1 除外),其中最多有 1 个编码器会话,该会话可通过 GL Surface 以 RGBA_1010102 输入格式进行配置。如果从 GL Surface 进行编码,则无需由编码器生成 HDR 元数据。AV1 编解码器会话仅需要支持 1080p 分辨率,即使要求支持 4K 也是如此。
    • [5.1/H-1-7] 当所有硬件视频编码器处于负载状态时,对于分辨率不超过 1080p 的视频编码会话,编解码器初始化延迟时间不得超过 40 毫秒。此处的负载定义为使用硬件视频编解码器和 1080p 音频和视频录制初始化的并行 1080p 至 720p 纯视频转码会话。 对于杜比视界编解码器,编解码器初始化延迟时间不得超过 50 毫秒。
    • [5.1/H-1-8] 当所有音频编码器处于负载状态时,对于比特率不超过 128 kbps 的音频编码会话,编解码器初始化延迟时间不得超过 30 毫秒。此处的负载定义为使用硬件视频编解码器和 1080p 音频和视频录制初始化的并行 1080p 至 720p 纯视频转码会话。
    • [5.1/H-1-9] 必须支持 2 个安全硬件视频解码器会话实例(AVC、HEVC、VP9、AV1 或更高版本)采用任何编解码器组合形式并行运行,并且 8 位 (SDR) 内容和 10 位 HDR 内容均采用 4k@30fps 分辨率(AV1 除外)。AV1 编解码器会话仅需要支持 1080p 分辨率,即使要求支持 4K 也是如此。
    • [5.1/H-1-10] 必须支持 3 个非安全硬件视频解码器会话实例与 1 个安全硬件视频解码器会话实例(共 4 个实例,AVC、HEVC、VP9、AV1 或更高版本)采用任何编解码器组合形式并行运行,其中 3 个会话采用 4K@30fps 分辨率(AV1 除外)(包括 1 个安全解码器会话),1 个非安全会话采用 1080p@30fps 分辨率(其中最多有 2 个会话可以采用 10 位 HDR)。AV1 编解码器会话仅需要支持 1080p 分辨率,即使要求支持 4K 也是如此。
    • [5.1/H-1-11] 设备上的每种硬件 AVC、HEVC、VP9 或 AV1 解码器都必须支持一种安全解码器。
    • [5.1/H-1-12] 当所有硬件视频解码器处于负载状态时,对于分辨率不超过 1080p 的视频解码会话,编解码器初始化延迟时间不得超过 40 毫秒。此处的负载定义为使用硬件视频编解码器和 1080p 音频和视频播放初始化的并行 1080p 至 720p 纯视频转码会话。对于杜比视界编解码器,编解码器初始化延迟时间不得超过 50 毫秒。
    • [5.1/H-1-13] 当所有音频解码器处于负载状态时,对于比特率不超过 128 kbps 的音频解码会话,编解码器初始化延迟时间不得超过 30 毫秒。此处的负载定义为使用硬件视频编解码器和 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@60fps 视频会话,在 10 秒内不得丢弃超过 1 帧(即丢帧率小于 0.167%)。
    • [5.3/H-1-2] 当处于 4K 会话负载状态时,在 60fps 视频会话中更改视频分辨率期间,在 10 秒内不得丢弃超过 1 帧。
    • [5.6/H-1-1] 使用 CTS 验证程序点按与发声间测试时,点按与发声间延迟时间不得超过 80 毫秒。
    • [5.6/H-1-2] 必须至少有一条支持的数据路径上的往返音频延迟时间不超过 80 毫秒。
    • [5.6/H-1-3] 必须支持不低于 24 位的音频,从而经 3.5 毫米音频耳机插孔(如果存在)和 USB 音频(如果支持)通过整个数据路径进行立体声输出,以实现低延迟配置和流式传输配置。对于低延迟配置,应用应在低延迟回调模式下使用 AAudio。对于流式传输配置,应用应使用 Java AudioTrack。在低延迟配置和流式传输配置中,HAL 输出接收器应接受 AUDIO_FORMAT_PCM_24_BITAUDIO_FORMAT_PCM_24_BIT_PACKEDAUDIO_FORMAT_PCM_32_BITAUDIO_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
    采样规模下限 4 MiB
    下采样数量下限 - H264 或 HEVC 32
    下采样数量下限 - VP9 9
    下采样数量下限 - AV1 288
    下采样缓冲区空间下限 1 MiB
    通用加密缓冲区空间下限 500 KiB
    并发会话数量下限 30
    每次会话的密钥数量下限 20
    密钥总数下限(所有会话) 80
    DRM 密钥总数下限(所有会话) 6
    信息大小 16 KiB
    每秒解密帧数 60 fps
    • [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 编解码器的视频编码器速率失真曲线所定义的最低质量目标(如即将发布的文档中所定义)。

  • 2.2.7.2. 摄像头

    查看修订版本

    如果手持设备实现针对 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 返回 android.os.Build.VERSION_CODES.U,则:

    • [7.5/H-1-1] 必须具有一个主后置摄像头,该摄像头的分辨率至少为 1200 万像素,支持以 4k@30fps 拍摄视频。主后置摄像头是具有最低摄像头 ID 的后置摄像头。
    • [7.5/H-1-2] 必须具有一个主前置摄像头,该摄像头的分辨率至少为 600 万像素,支持以 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] 根据 CTS 摄像头性能测试在 ITS 照明条件 (3000K) 下对这两种主摄像头的测量,对于 1080p 分辨率,摄像头 2 的 JPEG 拍摄延迟时间必须小于 1000 900毫秒。
    • [7.5/H-1-6] 根据 CTS 摄像头性能测试在 ITS 照明条件 (3000K) 下对这两种主摄像头的测量,摄像头 2 的启动延迟时间(从打开摄像头到第一个预览帧)必须小于 500 毫秒。
    • [7.5/H-1-8] 必须支持将 CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.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] 如有多个朝向相同方向的 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_SIMPLESTATISTICS_FACE_DETECT_MODE_FULL)。

  • 2.2.7.3. 硬件

    查看修订版本

    如果手持设备实现针对 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] 必须具有平均至少支持 1,000 尼特的 HDR 显示屏。
    • [7.6.1/H-2-1] 必须具有至少 8 GB 的物理内存。

  • 2.2.7.4. 性能

    查看修订版本

    如果手持设备实现针对 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。

  • 2.3.2. 多媒体

    查看修订版本

    TV 设备实现必须支持以下视频编码格式,并使其可供第三方应用使用:

    • [5.2/T-0-3] AV1

    TV 设备实现必须支持以下视频解码格式,并使其可供第三方应用使用:

  • 2.4.5. 安全模型

    查看修订版本

    如果设备实现包含安全锁定屏幕,并且包含一个或多个实现 TrustAgentService 系统 API 的可信代理,则:

    • [9.11.1/W-1-1] 必须至少每隔 72 小时要求用户通过建议的主要身份验证方法之一(例如 PIN 码、图案、密码)验证身份。

  • 2.5.1. 硬件

    查看修订版本

    如果设备实现支持 AM/FM 广播无线装置,并将该功能提供给所有应用使用,则:

    • [7.4.10/A-0-1] 必须声明支持 FEATURE_BROADCAST_RADIO

    外景摄像头是一种用来拍摄设备实现外部场景的摄像头(如后视摄像头)。

    Automotive 设备实现:

    • 应包含一个或多个外景摄像头。

    如果 Automotive 设备实现包含一个外景摄像头,则对于此类摄像头,这类实现:

    • [7.5/A-1-1] 不得有可通过 Android Camera API 访问的外景摄像头,除非它们符合摄像头核心要求
    • [7.5/A-SR-1] 强烈建议不要旋转或水平镜像摄像头预览。
    • [7.5/A-SR-2] 强烈建议分辨率至少为 130 万像素。
    • 应具有固定焦距硬件或 EDOF(扩展景深)硬件。
    • 可以在摄像头驱动程序中实现硬件自动对焦或软件自动对焦。

    如果 Automotive 设备实现包含一个或多个外景摄像头,并加载外景系统 (EVS) 服务,则对于此类摄像头,这类实现:

    • [7.5/A-2-1] 不得旋转或水平镜像摄像头预览。

    Automotive 设备实现:

    • 可以包含一个或多个可供第三方应用使用的摄像头。

    如果车载设备实现包含至少一个摄像头,并使其可供第三方应用使用,则:

    • [7.5/A-3-1] 必须报告功能标志 android.hardware.camera.any
    • [7.5/A-3-2] 不得将摄像头声明为系统摄像头
    • 可以支持第 7.5.3 节中所述的外接摄像头。
    • 可以包含可供后置摄像头使用的功能(如第 7.5.1 节中所述),例如自动对焦等。

    后置摄像头是指朝向外面的摄像头,可以位于车辆的任何位置,并朝向车厢的外部;也就是说,与传统摄像头一样,它拍摄的是背向车身一侧的景物。

    前置摄像头是指朝向用户的摄像头,可以位于车辆的任何位置,并朝向车厢的内部;也就是说,它拍摄的是用户,例如用于视频会议和类似应用的摄像头。

    Automotive 设备实现:

    • [7.5/A-SR-1] 强烈建议包含一个或多个朝向外面的摄像头。
    • 可以包含一个或多个朝向用户的摄像头。
    • [7.5/A-SR-2] 强烈建议支持对多个摄像头进行并发流式传输。

    如果 Automotive 设备实现至少包含一个朝向外面的摄像头,对于此类摄像头,则:

    • [7.5/A-1-1] 必须朝向正确方向,以便摄像头的长度方向与 Android Automotive 传感器坐标轴的 X-Y 平面对齐。
    • [7.5/A-SR-3] 强烈建议采用固定焦距硬件或 EDOF(扩展景深)硬件。
    • [7.5/A-1-2] 必须将主要的朝向外面的摄像头作为摄像头 ID 值最小的朝向外面的摄像头。

    如果 Automotive 设备实现至少包含一个朝向用户的摄像头,对于此类摄像头,则:

    • [7.5/A-2-1] 主要的朝向用户的摄像头必须是摄像头 ID 值最小的朝向用户的摄像头。
    • 可以朝向正确方向,以便摄像头的长度方向与 Android Automotive 传感器坐标轴的 X-Y 平面对齐。

    如果 Automotive 设备实现包含可通过 android.hardware.Cameraandroid.hardware.camera2 API 访问的摄像头,对于此类摄像头,则:

    • [7.5/A-3-1] 必须遵守第 7.5 节中的核心摄像头要求。

    如果 Automotive 设备实现包含无法通过 android.hardware.Cameraandroid.hardware.camera2 API 访问的摄像头,对于此类摄像头,则:

    • [7.5/A-4-1] 必须可通过增强型视觉系统服务访问。

    如果 Automotive 设备实现包含一个或多个可通过增强型视觉系统服务访问的摄像头,对于此类摄像头,则:

    • [7.5/A-5-1] 不得旋转或水平镜像摄像头预览。
    • [7.5/A-SR-4] 强烈建议分辨率至少为 130 万像素。

    如果 Automotive 设备实现包含一个或多个可通过增强型视觉系统服务与 android.hardware.Cameraandroid.hardware.Camera2 API 访问的摄像头,对于此类摄像头,则:

    • [7.5/A-6-1] 必须报告相同的摄像头 ID。

    如果 Automotive 设备实现提供专有摄像头 API,则:

  • 2.5.3. 软件

    查看修订版本

    Automotive 设备实现:

    • [3.8/A-0-1] 不得允许非当前前台用户的完全次要用户在任何屏幕上启动 activity 和访问界面。

  • 2.5.5. 安全模型

    查看修订版本

    如果 Automotive 设备实现声明 android.hardware.microphone,则:

    • [9.8.2/A-1-1] 在应用从麦克风访问音频数据时,必须显示麦克风指示标志,但如果仅 HotwordDetectionServiceSOURCE_HOTWORDContentCaptureService 或拥有第 9.1 节中使用 CDD 标识符 [C-4-X] 所列的角色的应用访问麦克风,则无需显示麦克风指示标志。
    • [9.8.2/A-1-2] 对于具有可见界面或直接用户互动的系统应用,不得隐藏麦克风指示标志。
    • [9.8.2/A-1-3] 必须提供一种方式,让用户能够在“设置”应用中切换麦克风。

    如果 Automotive 设备实现声明 android.hardware.camera.any,则:

    • [9.8.2/A-2-1] 在应用从摄像头访问实时数据时,必须显示摄像头指示标志,但如果仅拥有“第 9.1 节 - 权限”中使用 CDD 标识符 [C-4-X][C-3-X] 所定义所列角色的应用访问摄像头,则无需显示摄像头指示标志。

    • [9.8.2/A-2-3] 必须提供一种方式,让用户能够在“设置”应用中切换摄像头。
    • [9.8.2/A-2-4] 必须根据 PermissionManager.getIndicatorAppOpUsageData() 返回的内容显示使用摄像头的“最近用过”和“使用中”应用,以及与此类应用相关联的所有归因信息。

    如果设备实现包含安全锁定屏幕,并且包含一个或多个实现 TrustAgentService 系统 API 的可信代理,则:

    • [9.11.1/A-1-1] 必须至少每隔 336 小时要求用户通过建议的主要身份验证方法之一(例如 PIN 码、图案、密码)验证身份。

3. 软件

  • 3.1. 受管理 API 兼容性

    查看修订版本

    设备实现:

    • [C-0-8] 不得支持安装目标 API 级别低于 23 的应用。

  • 3.2.3.5. 有条件应用 intent

    查看修订版本

    如果设备实现报告 android.hardware.nfc.uiccandroid.hardware.nfc.ese,则:

  • 3.3.1. 应用二进制接口

    查看修订版本

    设备实现:

    • [C-0-12] 必须通过 libvulkan.so 库导出核心 Vulkan 1.0Vulkan 1.1 函数的函数符号以及 VK_KHR_surfaceVK_KHR_android_surfaceVK_KHR_swapchainVK_KHR_maintenance1VK_KHR_get_physical_device_properties2 扩展。请注意,所有这些符号都必须存在。第 7.1.4.2 节更详细地介绍了关于何时需要完整实现每个对应函数方面的要求。

  • 3.8.6. 主题

    查看修订版本

    如果设备实现包含屏幕或视频输出,则:

    • [C-1-5] 必须使用 Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES 文档中枚举的颜色主题样式(请参阅 android.theme.customization.theme_styles)生成动态配色调色板,即 TONAL_SPOTVIBRANTEXPRESSIVESPRITZRAINBOWFRUIT_SALAD MONOCHROMATIC

  • 3.8.8. activity 切换

    查看修订版本

    如果设备实现包含“最近用过”功能导航键(第 7.2.3 节中对此进行了详细说明),并且要更改该界面,则:

    • [C-1-2] 必须实现屏幕固定行为,并向用户提供用于开启/关闭该功能的设置菜单。

  • 3.9.2 受管个人资料支持

    查看修订版本

    如果设备实现声明 android.software.managed_users,则:

    • [C-1-10] 在使用具有焦点(即用户在所有 activity 中最后一个互动的 activity)且属于工作资料应用topActivity 窗口捕获屏幕截图时,必须确保屏幕截图数据保存在工作资料存储空间中。
    • [C-1-11] 在将屏幕截图保存到工作资料时,不得捕获除工作资料应用窗口外的任何其他屏幕内容(系统栏、通知或任何个人资料内容),以确保个人资料数据不会保存在工作资料中。

  • 3.9.5 设备政策解决框架:新增章节

    查看修订版本

    如果设备实现报告 android.software.device_adminandroid.software.managed_users,则:

    • [C-1-1] 必须解决设备政策冲突(如 AOSP 文档中所述)。

5. 多媒体兼容性

  • 5.1.4. 图像编码

    查看修订版本

    设备实现必须支持以下图像编码:

    • [C-0-4] AVIF
      • 设备必须支持 BITRATE_MODE_CQ 和基准配置文件。

  • 5.1.5. 图像解码

    查看修订版本

    设备实现必须支持以下图像解码:

    [C-0-7] AVIF(基准配置文件)

  • 5.1.6. 图像编解码器详细信息

    查看修订版本

    格式/编解码器 详细信息 支持的文件类型/容器格式
    JPEG 基准式 + 渐进式 JPEG (.jpg)
    GIF GIF (.gif)
    PNG PNG (.png)
    BMP BMP (.bmp)
    WebP WebP (.webp)
    Raw ARW (.arw)、CR2 (.cr2)、DNG (.dng)、NEF (.nef)、NRW (.nrw)、ORF (.orf)、PEF (.pef)、RAF (.raf)、RW2 (.rw2)、SRW (.srw)
    HEIF 图像、图像集、图像序列 HEIF (.heif)、HEIC (.heic)
    AVIF(基准配置文件) 图像、图像集、图像序列基准配置文件 HEIF 容器 (.avif)

  • 5.1.8. 视频编解码器列表

    查看修订版本

    格式/编解码器 详细信息 支持的文件类型/容器格式
    H.263
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • Matroska(.mkv,仅适用于解码)
    H.264 AVC 如需了解详情,请参阅第 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 Main Profile
    • MPEG2-TS(.ts,不可查找)
    • MPEG-4(.mp4、仅适用于解码)
    • Matroska(.mkv,仅适用于解码)
    MPEG-4 SP
    • 3GPP (.3gp)
    • MPEG-4 (.mp4)
    • Matroska(.mkv,仅适用于解码)
    VP8 如需了解详情,请参阅第 5.2 节第 5.3 节
    VP9 如需了解详情,请参阅第 5.3 节
    AV1 如需了解详情,请参阅第 5.2 节第 5.3 节
    • MPEG-4 (.mp4)
    • Matroska(.mkv,仅适用于解码)

  • 5.1.10. 媒体编解码器特征

    查看修订版本

    如果设备实现支持视频编解码器:

    • [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

  • 5.2. 视频编码

    查看修订版本

    如果设备实现支持任何视频编码器,并使其可供第三方应用使用,则:

    • 采用两个滑窗时,比帧内 (I-frame) 间隔之间的比特率高出的幅度不应超过 15%。
    • 比采用一个 1 秒的滑窗时的比特率高出的幅度不应超过 100%。

    如果设备实现支持任何视频编码器,使其可供第三方应用使用,
    并将 MediaFormat.KEY_BITRATE_MODE 设置为 BITRATE_MODE_VBR,以便编码器在“可变比特率”模式下运行;那么,只要它不会影响最低质量下限,编码比特率便会:

    • [C-5-1] 采用一个滑窗时,比帧内 (I-frame) 间隔之间的比特率高出的幅度不得采用一个滑窗时,比帧内 (I-frame) 间隔之间的比特率高出的幅度不应超过 15%。
    • [C-5-2] 比采用一个 1 秒的滑窗时的比特率高出的幅度不得比采用一个 1 秒的滑窗时的比特率高出的幅度不应超过 100%。

    如果设备实现支持任何视频编码器,使其可供第三方应用使用,并将 MediaFormat.KEY_BITRATE_MODE 设置为 BITRATE_MODE_CBR 以便让编码器以恒定比特率模式运行,则编码比特率:

    • [C-6-1] 必须[C-SR-2] 强烈建议比采用一个 1 秒的滑窗时的目标比特率高出的幅度不超过 15%。

  • 5.2.1. H.263

    查看修订版本

    如果设备实现支持 H.263 编码器,并使其可供第三方应用使用,则:

    • [C-1-1] 必须使用 Baseline Profile Level 45 支持 QCIF 分辨率 (176 x 144)SQCIF 分辨率是可选的
    • 应针对支持的编码器支持可动态配置的比特率。

  • 5.2.5. H.265

    查看修订版本

    如果设备实现支持 H.265 编解码器,则:

    • [C-1-1] 必须支持 Main Profile Level 3,分辨率最高为 512 x 512
    • 应支持下表中所列的高清编码配置文件。
    • [C-SR-1] 如果有硬件编码器的话,强烈建议支持 720 x 480 标清配置文件和高清编码配置文件(如下表所列)。

  • 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 fps 30 fps 30 fps 30 fps
    视频比特率 5 Mbps 8 Mbps 16 Mbps 50 Mbps

  • 5.3.2. H.263

    查看修订版本

    如果设备实现支持 H.263 解码器,则:

    • [C-1-1] 必须支持 Baseline Profile Level 30(CIF、QCIF 和 SQCIF 分辨率 @30fps 384kbps)和 Level 45(QCIF 和 SQCIF 分辨率 @30fps 128kbps)

  • 5.3.9. AV1

    查看修订版本

    如果设备实现支持 AV1 编解码器,则:

    • [C-1-1] 必须支持 Profile 0(其中包含 10 位内容)。

    如果设备实现支持 AV1 编解码器,并使其可供第三方应用使用,则:

    • [C-1-1] 必须支持 Main Profile,包括 8 位和 10 位内容。

    如果设备实现支持具有硬件加速解码器的 AV1 编解码器,则:

    • [C-2-1] 当 Display.getSupportedModes() 方法报告的高度等于或高于 720p 时,必须能够从下表中解码至少高清 720p 视频解码配置文件。
    • [C-2-2] 当 Display.getSupportedModes() 方法报告的高度等于或高于 1080p 时,必须能够从下表中解码至少高清 1080p 视频解码配置文件。
    标清 高清 720p 高清 1080p 超高清
    视频分辨率 720 x 480 像素 1280 x 720 像素 1920 x 1080 像素 3840 x 2160 像素
    视频帧速率 30 fps 30 fps 30 fps 30 fps
    视频比特率 5 Mbps 8 Mbps 16 Mbps 50 Mbps

    如果设备实现通过媒体 API 支持 HDR 配置文件,则:

    • [C-3-1] 必须支持从比特流和/或容器中提取和输出 HDR 元数据。
    • [C-3-2] 必须在设备屏幕或标准视频输出端口(例如 HDMI)上正确显示 HDR 内容。

  • 5.4.2. 捕获音频流以进行语音识别

    查看修订版本

    如果设备实现声明 android.hardware.microphone,则:

    • 对于每个用于对语音识别音频源进行录音的麦克风,应设置适当的音频输入敏感度,以确保对于 16 位的样本,以 90 dB 声压级 (SPL) 播放(在距离麦克风 30 厘米处麦克风旁边测量)的 1,000 Hz 正弦音调源会产生 RMS 为 2,500(在 1,770 到 3,530 范围内)的理想响应(或对于浮点/双精度样本,为 -22.35 db ±3dB 全标度)。

  • 5.5.2. 音效

    查看修订版本

    如果设备实现声明 android.hardware.audio.output 功能,则:

    • [C-1-4] 必须支持具有浮点输入和输出的音效
    • [C-1-5] 必须确保音效支持多声道,且声道数量不超过混音器的声道数量(也称为 FCC_LIMIT)。

  • 5.6. 音频延迟

    查看修订版本

    如果设备实现声明 android.hardware.audio.output,强烈建议它们满足或超出以下要求:

    • [C-SR-4] 对于根据 AAudioStream_getTimestamp 返回的输入和输出时间戳计算得出的往返延迟时间,强烈建议使其与 AAUDIO_PERFORMANCE_MODE_NONEAAUDIO_PERFORMANCE_MODE_LOW_LATENCY 测量的往返延迟时间相差不超过 30 毫秒(针对扬声器、有线耳机和无线耳机)。

7. 硬件兼容性

  • 7.1. 显示和图形

    查看修订版本

    Android 包含一些能够适当地为设备自动调整应用资产和界面布局的方式,以确保第三方应用能够在各种硬件配置各种硬件屏幕和配置上良好地运行。Android 兼容屏幕是指会实现 Android 开发者 - 屏幕兼容性概览、本节 (7.1) 及其子节中描述的所有行为和 API 以及本 CDD 第 2 节中记录的任何其他设备类型特定行为的显示屏。 在所有与 Android 兼容的第三方应用可运行的 Android 兼容屏幕上,设备实现必须正确实现这些 API 和行为(本节中对此进行了详细说明)。

    新要求开始

    设备实现:

    • [C-0-1] 必须默认仅在与 Android 兼容的屏幕上呈现第三方应用。

    本节的要求中提到的单位定义如下:

    • 物理对角线尺寸:屏幕亮显部分的两个对角之间的距离(以英寸为单位)。
    • 每英寸点数 (dpi)密度:1 英寸的线性水平或垂直跨度内包含的像素数,以每英寸像素数(ppi 或 dpi)表示。如果列出了 dpippi 和 dpi 值,则水平 dpi 和垂直 dpi 都必须在列出的范围内。
    • 宽高比:屏幕的长度像素与宽度像素之比。例如,480x854 像素的屏幕的宽高比是 854/480 = 1.779,或约为“16:9”。
    • 密度无关像素 (dp) 160 dpi 屏幕160 的屏幕密度标准化的虚拟像素单位。对于某些密度 d 和像素数 p,密度无关像素 dp 的数量的计算公式如下:像素 = dps *(密度/160)dp = (160/d) * p

  • 7.1.1.1. 屏幕尺寸和形状

    查看修订版本

    如果设备实现支持能够使用 UI_MODE_TYPE_NORMAL 尺寸配置的屏幕包含与 Android 兼容的使用实体圆角屏幕呈现这些屏幕,则:

    • [C-1-1] 对于每个此类屏幕,必须确保至少满足以下某一项要求:
    • 圆角的半径小于或等于 38 dp。
    • 当一个 15 dp x 15 dp 的框固定在逻辑屏幕的每个角上时,屏幕上至少应该显示每个框的一个像素。

    • 应提供一种方式,让用户能够切换为矩形角显示模式。

    新要求开始

    如果设备实现只能支持 NO_KEYS 键盘配置,并且打算报告对 UI_MODE_TYPE_NORMAL 界面模式配置的支持,则:

    • [C-4-1] 布局尺寸(不包括刘海屏)不得小于 596 dp x 384 dp。

    如果设备实现包含可折叠的 Android 兼容屏幕,或在多个显示面板之间放置了一个折叠合页,并使此类屏幕可用于呈现第三方应用,则:

    如果设备实现包含可折叠的 Android 兼容屏幕,或在多个显示面板之间放置了一个折叠合页,并且该合页或折叠边跨越全屏应用窗口,则:

    • [C-3-1] 必须通过扩展或 Sidecar API 向应用报告合页或折叠边的位置、边界和状态。

    如果设备实现包含一个或多个可折叠的 Android 兼容显示区域,或在多个与 Android 兼容的显示面板区域之间放置了一个折叠合页,并使此类显示区域可供应用使用,则:

    • [C-4-1] 必须实现正确版本的 Window Manager Extensions API 级别(如即将发布的文档中所述)。

  • 7.1.1.2. 屏幕宽高比:已移除

  • 7.1.1.3. 屏幕密度

    查看修订版本

    设备实现:

    • [C-0-1] 默认情况下,设备实现必须报告通过 DENSITY_DEVICE_STABLE APIDisplayMetrics 中列出的其中一种 Android 框架密度,并且此值必须是每个实体屏幕的静态值 在任何时间此值都必须保持不变;不过,不过,设备可以根据初始启动后用户对显示配置(例如显示大小)所做的更改报告不同的任意密度 DisplayMetrics.density

    • 设备实现应定义数值最接近屏幕物理密度的标准 Android 框架密度,除非该逻辑密度会导致报告的屏幕尺寸低于支持的最小值。如果在数值上最接近物理密度的标准 Android 框架密度会导致屏幕尺寸小于支持的最小兼容屏幕尺寸(宽度为 320 dp),设备实现应报告下一个最低的标准 Android 框架密度。

    新要求开始

    • 应定义数值最接近屏幕物理密度的标准 Android 框架密度,或与手持设备的相同等效角度视野范围测量值相对应的值。

    如果设备实现提供有用于一种用于更改设备显示区域大小的方式,则

    • [C-1-1] 不得将显示区域大小调整为任何显示屏的缩放不得超过 DENSITY_DEVICE_STABLE 原生密度1.5 倍的尺寸,也不得产生小于 320 dp(相当于资源限定尺寸为 sw320dp)的有效最小屏幕尺寸,以先达到者为准。
    • [C-1-2] 不得将显示区域大小调整为任何显示屏的缩放不得小于 DENSITY_DEVICE_STABLE 原生密度0.85 倍的尺寸。

  • 7.1.4.2 Vulkan

    查看修订版本

    如果设备实现支持 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

    • 应支持 VkPhysicalDeviceProtectedMemoryFeaturesVK_EXT_global_priority

    • [C-SR-5] 强烈建议支持 VkPhysicalDeviceProtectedMemoryFeatures.protectedMemoryVK_EXT_global_priority

    • [C-SR-6] 强烈建议将 SkiaVk 与 HWUI 搭配使用。

    如果设备实现支持 Vulkan 1.1 并声明此处所述的任一 Vulkan 功能标志,则:

    • [C-SR-7] 强烈建议使 VK_KHR_external_fence_fd 扩展可供第三方应用使用,并允许应用将栅栏载荷导出到 POSIX 文件描述符中以及从 POSIX 文件描述符中导入栅栏载荷,如此处所述。

  • 7.3.10. 生物识别传感器

    查看修订版本

    如果设备实现具有多个生物识别传感器,则:

    • [C-7-1] 如果生物识别功能因失败尝试次数过多而锁定(即生物识别功能处于停用状态,直到用户使用主要身份验证方法解锁)或限时锁定(即生物识别功能暂时处于停用状态,用户需要等待一段时间),必须也锁定更低生物识别类别的所有其他生物识别功能。在限时锁定的情况下,必须将生物识别验证的退避时间设置为限时锁定的所有生物识别功能的最长退避时间。

    • [C-SR-12] 如果生物识别功能因失败尝试次数过多而锁定(即生物识别功能处于停用状态,直到用户使用主要身份验证方法解锁)或限时锁定(即生物识别功能暂时处于停用状态,用户需要等待一段时间),强烈建议也锁定同一生物识别类别的所有其他生物识别功能。在限时锁定的情况下,强烈建议将生物识别验证的退避时间设置为限时锁定的所有生物识别功能的最长退避时间。

    • [C-7-2] 必须要求用户通过建议的主要身份验证方法(例如 PIN 码、图案、密码)验证身份,才能为已被锁定的生物识别功能重置锁定计数器。对于 3 类生物识别,可以允许为同一类别或更低类别的已锁定生物识别功能重置锁定计数器。对于 2 类1 类生物识别,不得允许为任何生物识别功能完成重置锁定操作。

    如果设备实现希望将生物识别传感器视为 1 类(之前的便利),则:

    • [C-1-12] 每种演示攻击手段 (PAI) 类型的欺骗和冒名攻击的接受率不得高于 40%(此值由 Android 生物识别测试协议衡量得出)。

    • [C-SR-13] 强烈建议每种演示攻击手段 (PAI) 类型的欺骗和冒名攻击接受率不高于 30%(此值由 Android 生物识别测试协议衡量得出)。

    • [C-SR-14] 强烈建议披露生物识别传感器的生物识别类别以及启用该传感器的相应风险。

    • [C-SR-17] 强烈建议实现新的 AIDL 接口(例如 IFace.aidlIFingerprint.aidl)。

    如果设备实现希望将生物识别传感器视为 2 类(之前的),则:

    • [C-SR-15] 强烈建议每种演示攻击手段 (PAI) 类型的欺骗和冒名攻击接受率不高于 20%(此值由 Android 生物识别测试协议衡量得出)。

    • [C-2-3] 必须在 Android 用户或内核空间外部的隔离执行环境(如可信执行环境 [TEE])中、在具有通向隔离执行环境的安全信道的芯片上,或者在满足第 9.17 节中要求的受保护虚拟机上执行生物识别匹配。
    • [C-2-4] 必须对所有可识别的数据进行加密,并对其采用密码形式的身份验证机制,以确保在隔离执行环境、具有通向隔离执行环境的安全信道的芯片或者满足第 9.17 节中要求且由 Hypervisor 控制的受保护虚拟机之外无法获取、读取或更改这些数据(如 Android 开源项目网站上的实现准则中所述)。
    • [C-2-5] 对于基于摄像头的生物识别,进行基于生物识别的身份验证或注册时:
      • 必须在防止在隔离执行环境、具有通向隔离执行环境的安全信道的芯片或者满足第 9.17 节中要求且由 Hypervisor 控制的受保护虚拟机之外读取或更改摄像头帧的模式中操作摄像头。
      • 对于 RGB 单摄像头解决方案,可在隔离执行环境之外读取摄像头帧,以支持注册预览等操作,但仍不得更改。
    • [C-2-7] 不得在 TEE 范围或者满足第 9.17 节中要求且由 Hypervisor 控制的受保护虚拟机之外允许应用处理器对可识别的生物识别数据及其衍生的任何数据(例如嵌入)进行未加密的访问。发布时搭载 Android 9 或更低版本而后升级的设备不可免于遵循 C-2-7 要求。

    如果设备实现希望将生物识别传感器视为 3 类(之前的),则:

    • [C-SR-16] 强烈建议每种演示攻击手段 (PAI) 类型的欺骗和冒名攻击接受率不高于 7%(此值由 Android 生物识别测试协议衡量得出)。

  • 7.3.13. IEEE 802.1.15.4 (UWB)

    查看修订版本

    如果设备实现支持 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 毫秒。
      • CONFIG_ID_2:FiRa 定义的一对多 STATIC STS DS-TWR 范围,延迟模式,测距间隔 200 毫秒。典型使用场景:智能手机与许多智能设备交互。
      • 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 无线装置的应用拥有(NEARBY_DEVICES 权限组中的)UWB_RANGING 权限。

    通过标准组织(包括 FIRACCCCSA)定义的相关一致性和认证测试,有助于确保 802.1.15.4 正常运行。

  • 7.4.1. 电话

    查看修订版本

    在 Android API 和本文档中,“电话”专指与进行语音通话、发送短信或通过移动(例如 GSM、CDMA、LTE、NR)GSM 或 CDMA 网络建立移动数据相关的硬件。支持“电话”功能的设备可根据具体产品选择提供部分或全部通话、短信和数据服务。

    通过 GSM 或 CDMA 网络。虽然这些语音通话可能采用也可能不采用分封交换技术,但都是为了使 Android 被视为独立于任何可通过同一网络实现的数据连接。也就是说,Android“电话”功能和 API 专指语音通话和短信。例如,如果设备实现无法打电话或收发短信,无论它们是否使用移动网络进行数据连接,都不会被视为电话设备。

  • 7.4.2. IEEE 802.11 (Wi-Fi)

    查看修订版本

    如果设备实现支持 802.11,并将该功能提供给第三方应用使用,则:

    • [C-1-4] 必须支持多播 DNS (mDNS),并且不得在操作过程中的任何时候滤除 mDNS 数据包(224.0.0.251 或 ff02::fb),包括在屏幕未处于活动状态时;除非丢弃或滤除这些数据包是为了保持在目标市场适用法规所要求的能耗范围内,必须如此。即使处于待机状态时(适用于 Android TV 设备实现)。

  • 7.4.3. 蓝牙

    查看修订版本

    如果设备实现声明 FEATURE_BLUETOOTH_LE,则:

    • [C-SR-2] 强烈建议测量并补偿 Rx 偏移,以确保在与以 ADVERTISE_TX_POWER_HIGH 进行传输的参考设备相距 1 米时,BLE RSSI 中位数为 -60dBm +/-10 dB(要将设备置于正确方向,使各设备都位于“平行平面”上,且屏幕朝向相同的方向)。
    • [C-SR-3] 强烈建议测量并补偿 Tx 偏移,以确保从相距 1 米且以 ADVERTISE_TX_POWER_HIGH 进行传输的参考设备进行扫描时,BLE RSSI 中位数为 -60dBm +/-10 dB(要将设备置于正确方向,使各设备都位于“平行平面”上,且屏幕朝向相同的方向)。

    • [C-10-3] 必须测量并补偿 Rx 偏移,以确保在与以 ADVERTISE_TX_POWER_HIGH 进行传输的参考设备相距 1 米时,BLE RSSI 中位数为 -55dBm +/-10 dB。
    • [C-10-4] 必须测量并补偿 Tx 偏移,以确保从相距 1 米且以 ADVERTISE_TX_POWER_HIGH 进行传输的参考设备进行扫描时,BLE RSSI 中位数为 -55dBm +/-10 dB。

    如果设备实现支持蓝牙 5.0 版,则:

    • [C-SR-4] 强烈建议支持:
    • LE 2M PHY
    • LE 编解码器 PHY
    • LE 广播扩展项
    • 定期广播
    • 至少 10 个广播集
    • 至少 8 个 LE 并发连接。每个连接可以采用任一连接拓扑角色。
    • LE 链路层隐私保护
    • 至少包含 8 个条目的“解析列表”

  • 7.4.9. UWB

    查看修订版本

    • [C-1-7] 必须确保在与参考设备相距 1 米处进行测量时,测量结果的中位数在 [0.75 米,1.25 米] 以内(要测量被测设备顶部边缘与地面的真实距离,被测设备正面朝上且倾斜 45 度)。

  • 7.5.1. 后置摄像头

    查看修订版本

    后置摄像头指位于设备上背向屏幕一侧的摄像头,也就是说,与传统摄像头一样,它拍摄的是背向设备屏幕一侧的景物。

    后置摄像头是指朝向外面的摄像头,与传统摄像头一样,它拍摄的是背向设备一侧的景物;在手持设备上,这是指位于设备上背向显示屏一侧的摄像头。

  • 7.5.2. 前置摄像头

    查看修订版本

    前置摄像头指与设备上的显示屏位于同一侧的摄像头,也就是通常用于拍摄用户自己的摄像头,例如用于视频会议及类似应用的摄像头。

    前置摄像头是指朝向用户的摄像头,通常用于拍摄用户,例如用于视频会议或类似应用的摄像头;在手持设备上,这是指与设备上的显示屏位于同一侧的摄像头。

  • 7.5.3. 外接摄像头

    查看修订版本

    外接摄像头是指可以随时以物理方式与设备连接或分离,并可朝向任何方向的摄像头;例如 USB 摄像头。

  • 7.5.4. 摄像头 API 行为

    查看修订版本

    设备实现必须为所有可用的摄像头实现摄像头相关 API 的以下行为。设备实现:

  • 7.5.5. 摄像头方向

    查看修订版本

    满足以下所有条件的设备均不受上述要求约束:

    • 用户无法旋转的设备实现,例如汽车设备。

  • 7.10. 触感反馈

    查看修订版本

    打算手持或穿戴的设备可以配备通用触感反馈致动器,可供应用用于多种用途,包括通过铃声、闹钟、通知和常规触摸反馈来吸引用户的注意力。

    如果设备实现不包含此类通用触感反馈致动器,则:

    • [7.10/C] 必须针对 Vibrator.hasVibrator() 返回 false。

    如果设备实现包含至少一个此类通用触感反馈致动器,则:

    如果设备实现遵循触感反馈常量映射,则:

    请参阅第 2.2.1 节,了解设备专属要求。

9. 安全模型兼容性

  • 9.1. 权限

    查看修订版本

    设备实现:

    • [C-0-4] 对于这两个界面,必须有且只能有一个实现。

    如果设备实现预安装持有 System UI IntelligenceSystem Ambient Audio IntelligenceSystem Audio IntelligenceSystem Notification IntelligenceSystem Text IntelligenceSystem 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] 不得绑定到其他应用,但以下系统应用除外:蓝牙、通讯录、媒体、电话、系统界面以及提供互联网 API 的组件。这项要求的严格程度要比第 9.8.6 节中列出的“强烈建议”要求高。

    如果设备实现包含支持 VoiceInteractionService 的默认应用,则:

    • [C-5-1] 不得授予 ACCESS_FINE_LOCATION 作为该应用的默认权限。

  • 9.5. 多用户支持

    查看修订版本

    如果设备实现创建上述附加用户配置文件,则:

    • [C-4-5] 在向用户呈现图标时,必须在视觉上区分双实例应用图标。
    • [C-4-6] 必须提供一种用户功能,用于删除整个克隆资料数据。
    • [C-4-7] 当用户选择删除所有克隆资料数据时,必须卸载所有克隆应用、删除专用应用数据目录及其内容,并删除克隆资料数据。
    • 应在删除最后一个克隆应用时提示用户删除整个克隆资料数据。
    • [C-4-8] 必须通知用户卸载克隆应用时会删除应用数据,或为用户提供一个用于在从设备上卸载应用时保留应用数据的选项。
    • [C-4-9] 如果用户在卸载期间选择删除数据,必须删除专用应用数据目录及其内容。

    • [C-4-14] 必须对在此附加资料中运行的应用进行单独的权限和存储管理

    • [C-4-5] 对于其他资料中具有启动器 activity 的应用,必须仅允许它们访问已可供父级用户资料访问的联系人。

  • 9.7. 安全功能

    查看修订版本

    内存安全技术可在使用 android:memtagMode 清单选项的应用中至少减少以下类别的 bug(概率较高,超过 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 的设置。

  • 9.8.2. 录制

    查看修订版本

    设备实现:

  • 9.8.6. 操作系统级数据和环境数据:此章节已从内容捕获和应用搜索重命名为操作系统级数据和环境数据

    查看修订版本

    Android 通过系统 API ContentCaptureServiceAugmentedAutofillServiceAppSearchGlobalManager.query 或其他专有方式支持设备实现机制,以捕获应用和用户之间的以下应用数据互动以下敏感数据

    • 通过 AugmentedAutofillService 发送到系统的任何界面或其他数据。
    • 可通过 Content Capture API 访问的任何界面或其他数据。
    • 可通过 FieldClassificationService API 访问的任何界面或其他数据
    • 通过 AppSearchManager API 传递给系统且可通过 AppSearchGlobalManager.query 访问的任何应用数据。

    • 应用通过 Content Capture API、AppSearchManager API 或具有类似功能的 Android 专有 API 提供给系统的任何其他事件。

    • 因使用语音识别程序实现的 SpeechRecognizer#onDeviceSpeechRecognizer() 而获得的音频数据。
    • 通过 AudioRecordSoundTrigger 或其他音频 API 在后台(连续)获取的音频数据(获取此类数据的行为不会导致显示用户可见的指示器)
    • 通过 CameraManager 或其他相机 API 在后台(连续)获取的相机数据(获取此类数据的行为不会导致显示用户可见的指示器)

    如果设备实现捕获上述任何数据,则:

    • [C-1-3] 对于所有此类数据和日志,如要将其发送到设备以外的地方,必须仅使用可保护隐私的机制来发送,但每次共享数据时都征得用户明确同意的情况除外。隐私保护机制是指“仅允许汇总分析并防止将记录的事件或派生的结果与个别用户匹配的机制”,以防止任何用户级数据被内省(如使用 RAPPOR 等差分隐私技术实现)。

    • [C-1-5] 不得与其他不符合当前章节(9.8.6 内容捕获操作系统级数据和环境数据)中概述的要求的操作系统组件共享此类数据,但每次共享数据时都征得用户明确同意的情况除外。除非此类功能是作为 Android SDK API(AmbientContextHotwordDetectionService)构建的。

    • [C-1-6] 必须提供一种方式,让用户能够清除ContentCaptureService实现或专有方式收集的数据(如果数据以任何形式存储在设备上时)。如果用户选择清除数据,必须移除所有收集到的历史数据。

    • [C-SR-3] 强烈建议使用 Android SDK API 或 OEM 拥有的类似开源代码库实现;并且/或者在沙盒化实现中执行(请参阅第 9.8.15 节“沙盒化 API 实现”)。

    Android 通过 SpeechRecognizer#onDeviceSpeechRecognizer() 能够在设备上执行语音识别,而无需涉及网络。设备上 SpeechRecognizer 的任何实现必须遵循本节中概述的政策。

  • 9.8.10. 连接 bug 报告

    查看修订版本

    如果设备实现声明 android.hardware.telephony 功能标志,则:

    • [C-1-4] 使用 BUGREPORT_MODE_TELEPHONY 生成的报告必须至少包含以下信息:
      • SubscriptionManagerService 转储

  • 9.8.14. 凭据管理器:已移除

  • 9.8.15. 沙盒化 API 实现:新增章节

    查看修订版本

    Android 通过一组委托 API 提供了一种处理安全的操作系统级数据和环境数据的机制。此类处理可以委托给具有特许权限和较少通信功能的预安装 APK,称为沙盒化 API 实现。

    任何沙盒化 API 实现:

    • [C-0-1] 不得请求 INTERNET 权限。
    • [C-0-2] 必须仅通过以下方式访问互联网:使用由公开可用的开放源代码实现(采用可保护隐私的机制)支持的结构化 API,或通过 Android SDK API 间接访问。可保护隐私的机制是指“仅允许汇总分析并防止将记录的事件或派生的结果与个别用户匹配的机制”,以防止任何每用户数据被内省(如使用 RAPPOR 等差分隐私技术实现)。
    • [C-0-3] 必须确保该服务与其他系统组件保持独立(例如,不绑定该服务或共享进程 ID),但以下情况除外:
      • 电话、通讯录、系统界面和媒体
    • [C-0-4] 不得允许用户将该服务替换为用户可安装应用或服务
    • [C-0-5] 必须只允许预安装的服务捕获此类数据。 除非替换功能已内置到 AOSP 中(例如数字助理应用)。
    • [C-0-6] 不得允许除预安装服务机制外的任何应用能够捕获此类数据。除非此类捕获功能是通过 Android SDK API 实现的。
    • [C-0-7] 必须提供一种方式,让用户能够停用该服务。
    • [C-0-8] 不得遗漏一种方式,让用户能够管理该服务保留的 Android 权限并遵循 Android 权限模型(如第 9.1 节“权限”中所述)。

  • 9.8.16. 连续的音频和摄像头数据:新增章节

    查看修订版本

    除了第 9.8.2 节“录制”、第 9.8.6 节“操作系统级数据和环境数据”以及第 9.8.15 节“沙盒化 API 实现”中列出的要求之外,如果实现会使用通过 AudioRecord、SoundTrigger 或其他音频 API 在后台(连续)获取的音频数据或者通过 CameraManager 或其他相机 API 在后台(连续)获取的相机数据,则:

    • [C-0-1] 必须强制执行相应的指示器(即相机和/或麦克风,如第 9.8.2 节“录制”所述),除非:
    • [C-SR-1] 强烈建议所有利用此类数据的功能均须征得用户同意,并且默认处于停用状态。
    • [C-SR-2] 强烈建议对来自远程穿戴式设备的相机数据采用相同的处理方式(即遵循第 9.8.2 节“录制”、第 9.8.6 节“操作系统级数据和环境数据”、第 9.8.15 节“沙盒化 API 实现”,以及第 9.8.16 节“连续音频和相机数据”)。

    如果相机数据是由远程穿戴式设备提供的,并在脱离 Android 操作系统、沙盒化实现或由 WearableSensingManager 构建的沙盒化功能情况下,以非加密的形式处理,则:

    • [C-1-1] 必须指示远程穿戴式设备在相应位置显示额外的指示器。

    如果设备可以在没有指定关键字的情况下与数字助理应用互动(处理一般用户查询,或通过相机分析用户活跃状态),则:

    • [C-2-1] 必须确保此类实现由具有 android.app.role.ASSISTANT 角色的软件包提供。
    • [C-2-2] 必须确保此类实现使用 HotwordDetectionService 和/或 VisualQueryDetectionService Android API。

  • 9.8.17. 遥测:新增章节

    查看修订版本

    Android 使用 StatsLog API 存储系统和应用日志。这些日志通过可供特权系统应用使用的 StatsManager API 进行管理。

    StatsManager 还提供了一种使用可保护隐私的机制从设备收集隐私敏感数据的方法。具体来说,StatsManager::query API 提供了查询 StatsLog 中定义的受限指标类别的功能。

    如果实现会从 StatsManager 查询和收集受限指标,则一律:

    • [C-0-1] 必须是设备上的唯一应用/实现,并且具有 READ_RESTRICTED_STATS 权限。
    • [C-0-2] 只能使用可保护隐私的机制来发送设备的遥测数据和日志。可保护隐私的机制是指“仅允许汇总分析并防止将记录的事件或派生的结果与个别用户匹配的机制”,以防止任何每用户数据被内省(如使用 RAPPOR 等差分隐私技术实现)。
    • [C-0-3] 不得将此类数据与设备上的任何用户身份(如账号)相关联。
    • [C-0-4] 不得与其他不符合当前章节(第 9.8.17 节“可保护隐私的遥测技术”)中概述的要求的操作系统组件共享此类数据。
    • [C-0-5] 必须提供一种方式,让用户能够启用/停用以可保护隐私的方式收集、使用和共享遥测数据的功能。
    • [C-0-6] 必须提供一种方式,让用户能够清除该实现收集的此类数据(如果数据以任何形式存储在设备上)。如果用户选择清除数据,则必须移除设备上当前存储的所有数据。
    • [C-0-7] 必须在开源代码库中披露底层隐私保护协议实现。
    • [C-0-8 ] 必须强制执行本节中所述的数据出站流量政策,以限制 StatsLog 中定义的受限指标类别的数据收集。

  • 9.10. 设备完整性

    查看修订版本

    设备实现

    如果设备实现能够基于每个页面验证文件内容,则

    • [C-0-3C-2-1] 支持在不读取整个文件的情况下,对照可信密钥对文件内容进行加密验证。

    • [C-0-4C-2-2] 如果读取的内容未通过可信密钥的验证根据上面的 [C-2-1] 未通过验证,不得允许对受保护文件的读取请求成功执行。

    • [C-2-4] 必须针对已启用的文件返回 O(1) 中的文件校验和。

  • 9.11. 密钥和凭据

    查看修订版本

    Android Keystore 系统允许应用开发者将加密密钥存储在容器中,并通过 KeyChain APIKeystore API 在加密操作中使用它们。设备实现:

    • [C-0-3] 必须限制主要身份验证方法尝试失败的次数。
    • [C-SR-2] 强烈建议将主要身份验证方法尝试失败的次数上限设置为 20 次;如果用户同意并选择启用该功能,则在超出主要身份验证方法尝试失败次数限制后执行“恢复出厂设置”。

    如果设备实现会添加或修改用于解锁锁定的屏幕且基于已知密钥的身份验证方法,并将新的身份验证方法视为安全的屏幕锁定方式,则:

    • [C-SR-3] 强烈建议 PIN 码至少包含 6 位数或等效的 20 位熵。
    • [C-2-1] 不得允许在没有用户互动的情况下自动输入长度不足 6 位数的 PIN 码,以免泄露 PIN 码的长度。

  • 9.11.1. 安全锁定屏幕、身份验证和虚拟设备

    查看修订版本

    设备实现:

    • [C-0-1] 必须限制主要身份验证方法尝试失败的次数。
    • [C-SR-5] 强烈建议将主要身份验证方法尝试失败的次数上限设置为 20 次;如果用户同意并选择启用该功能,则在超出主要身份验证方法尝试失败次数限制后执行“恢复出厂设置”。

    如果设备实现将数字 PIN 码设置为建议的主要身份验证方法,则:

    • [C-SR-6] 强烈建议 PIN 码至少包含 6 位数或等效的 20 位熵。
    • [C-SR-7] 强烈建议不要允许在没有用户互动的情况下自动输入长度不足 6 位数的 PIN 码,以免泄露 PIN 码的长度。

    如果设备实现包含安全锁定屏幕,并且包含一个或多个实现 TrustAgentService 系统 API 的可信代理,则:

    [C-7-8] 除非需要考虑用户安全(驾驶员分心),否则必须至少每隔 72 小时要求用户通过建议的主要身份验证方法之一(例如 PIN 码、图案、密码)验证身份。

    如果设备实现允许应用创建辅助虚拟屏幕并支持关联的输入事件(例如通过 VirtualDeviceManager),且显示屏未标记 VIRTUAL_DISPLAY_FLAG_SECURE,则:

    [C-13-10] 必须禁止从虚拟设备发起的应用安装。

  • 9.17. Android 虚拟化框架

    查看修订版本

    如果设备实现支持 Android 虚拟化框架 API (android.system.virtualmachine.*),Android 主机:

    • [C-1-1] 必须支持 android.system.virtualmachine 软件包定义的所有 API。
    • [C-1-2] 不得修改 Android SELinux 和用于管理受保护的虚拟机 (pVM) 的权限模型。

    • [C-1-3] 不得修改、省略或替换上游 Android 开源项目 (AOSP) 中提供的 system/sepolicy 中存在的 neverallow 规则,并且政策必须在所有 neverallow 规则都存在的情况下编译。

    • [C-1-4] 必须只允许由平台签名的代码和特权应用不得允许不受信任的代码(例如第三方应用)创建和运行受保护的虚拟机 pVM。 注意:此要求在未来的 Android 版本中可能会发生变化。

    • [C-1-5] 不得允许受保护的虚拟机 pVM 执行出厂映像或其更新中未包含的代码。Android 启动时验证未涵盖的任何内容(例如从互联网下载的文件或旁加载的文件)都不得在受保护的虚拟机中运行。

    • [C-1-5] 必须只允许不可调试的 pVM 执行出厂映像或其平台更新中的代码,其中也包括特权应用的任何更新。

    如果设备实现支持 Android 虚拟化框架 API (android.system.virtualmachine.*),则所有受保护的虚拟机 pVM 实例:

    • [C-2-1] 必须能够在受保护的虚拟机 pVM 中运行虚拟化 APEX 中提供的所有操作系统。
    • [C-2-2] 不得允许受保护的虚拟机 pVM 运行未由设备实现人员或操作系统供应商签名的操作系统。
    • [C-2-3] 不得允许受保护的虚拟机 pVM 将数据作为代码执行(例如 SELinux neverallow execmem)。

    • [C-2-4] 不得修改、省略或替换上游 Android 开源项目 (AOSP) 中提供的 system/sepolicy/microdroid 中存在的 neverallow 规则。

    • [C-2-5] 必须实现受保护的虚拟机 pVM 深度防护机制(例如用于 pVM 的 SELinux),即使对于非 Microdroid 操作系统也是如此。
    • [C-2-6] 必须确保在无法验证初始映像无法验证虚拟机将运行的映像时,pVM 无法固件拒绝启动。验证必须在虚拟机内完成。
    • [C-2-7] 必须确保在 instance.img 完整性受到破坏时,pVM 无法固件拒绝启动。

    如果设备实现支持 Android 虚拟化框架 API (android.system.virtualmachine.*),则 Hypervisor:

    • [C-3-1] 必须确保虚拟机(pVM 或主机虚拟机)专有的内存页面只能由虚拟机本身或 Hypervisor 访问,而不能由其他受保护或不受保护的虚拟机访问。不得允许任何 pVM 访问属于其他实体(即其他 pVM 或 Hypervisor)的网页,除非网页所有者明确共享该网页。其中包括主机虚拟机。此要求适用于对 CPU 和 DMA 的访问。
    • [C-3-2] 如果 pVM 使用了某个网页,在其返回主机(例如 pVM 被销毁)之前,必须擦除该网页。
    • [C-3-3SR-1] 强烈建议确保必须确保先加载和执行 pVM 固件,然后才能在 pVM 中加载和执行任何代码。
    • [C-3-4] 必须确保每个虚拟机都会为每个虚拟机派生 Secret提供给 pVM 实例的启动证书链 (BCC) 和复合设备标识符 (CDI),这个 Secret 只能由该特定虚拟机实例派生,并在恢复出厂设置和 OTA 后更改。

    如果设备实现支持 Android 虚拟化框架 API,则在所有区域中:

    • [C-4-1] 不得为 pVM 提供允许绕过 Android 安全模型的功能。

    如果设备实现支持 Android 虚拟化框架 API,则:

    • [C-5-1] 必须能够支持隔离编译,但可能会在设备发货时停用隔离编译功能ART 运行时更新

    如果设备实现支持 Android 虚拟化框架 API,则在密钥管理方面:

    • [C-6-1] 必须在用户无法修改的点为 DICE 链启用 root 权限,即使在未锁定的设备上也是如此(目的是确保其不会遭到仿冒)。

    • [C-SR-26-2] 强烈建议使用 DICE 作为每个虚拟机的 Secret 派生机制。 必须正确执行 DICE,即提供正确的值。

返回页首