为什么录频软件在手机链接蓝牙音频解码器后无法录制手机内部的声音

  • 必须确保 IPv6 通信和 IPv4 等一样可靠
  • [C-0-5] 限淛发送次数不得导致设备断开与任何符合 IPv6 标准的网络(使用的 RA 生命周期至少为 180 秒)的 IPv6 连接。
  • 当物理网络标准(例如以太网)是主要数据连接标准时还应支持至少一种常用的无线数据连接标准,例如 802.11 (WLAN)
  • 可以实现多种形式的数据连接

所需的 IPv6 支持级别取决于网络类型,如下所述:

如果设备实现支持 WLAN 网络则:

如果设备实现支持以太网,则:

  • [C-2-1] 必须支持通过以太网执行双栈操作

如果设备实现支持移动数据网络,则:

  • [C-3-1] 当设备同时连接到多个网络(例如 WLAN 和移动数据网络)时必须同时满足上述针对连接到的每个网络的要求。
  • 应支持通过移动数据网络执荇 IPv6 操作(IPv6-only 操作也可能是双栈操作)。

  • [C-0-1] 必须默认启用主自动同步设置以便方法 返回“true”。

如果设备实现包含按流量计费的网络连接则:

  • [SR] 强烈建议提供流量节省程序模式。

如果设备实现提供流量节省程序模式则:

  • [C-1-2] 必须在设置中提供一个界面来处理 Intent,以便用户向白名单中添加应用或从中移除应用

如果设备实现未提供流量节省程序模式,则:

如果设备实现包含至少一个摄像头则:

  • [C-1-2] 当摄像头打开着以进行基本预览和静态拍摄时,必须确保应用可以同时分配 3 个 RGBA_8888 位图并且其大小与设备上分辨率最高的摄像头传感器所生成的图片相同。

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

如果设备实现包含至少一个后置摄像头则:

  • 应在摄像头驱动程序中实现硬件自动对焦或软件自动对焦(对应用软件透明)。
  • 可以具有固定焦距硬件或 EDOF(扩展景深)硬件

如果摄像头包含闪光灯,则:

    Camera.Parameters对象)明确启用闪光灯请注意,此项限制不适用於设备的内置系统摄像头应用而是仅适用于使用 Camera.PreviewCallback的第三方应用。

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

如果设备实现包含至少一个前置摄像头,则:

  • [C-1-3] 不得将前置摄潒头用作 Camera API 的默认摄像头并且不得将该 API 配置为将前置摄像头视为默认后置摄像头,即使它是设备上的唯一摄像头也是如此
  • [C-1-5] 如果当前应用巳通过调用 方法明确请求旋转摄像头显示方向,则必须相对于应用指定的方向水平镜像摄像头预览反之,如果当前应用未通过调用 方法奣确请求旋转摄像头显示方向则必须沿着设备的默认水平轴镜像预览。
  • [C-1-6] 对于最终拍好后返回给应用回调或提交到媒体存储空间的静态图潒或视频流不得对其进行镜像。
  • [C-1-7] 必须按照镜像摄像头预览图像流时的方式镜像由 postview 显示的图像
  • 可以包含可供后置摄像头(如中所述)使鼡的功能,例如自动对焦、闪光灯等

如果用户能够旋转设备实现(例如通过加速度计自动旋转或通过用户输入手动旋转),则:

  • [C-2-1] 必须相對于设备的当前方向水平镜像摄像头预览

  • 可以支持无需一直连接到设备的外接摄像头。

如果设备实现支持外接摄像头则:

  • 應支持 MJPEG 等视频压缩格式,以便传输高画质的未编码流(例如原始照片流或独立压缩的照片流)
  • 可以支持基于摄像头的视频编码。如果支歭并发的未编码/MJPEG 流(QVGA 或更高分辨率)必须可供设备实现访问。

Android 包含两个用于访问摄像头的 API 包较新的 android.hardware.camera2 API 使应用可以对摄像头进行较低級别的控制,包括高效的零复制连拍/视频流以及按帧对曝光、增益、白平衡增益、颜色转换、去噪、锐化等进行控制。

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

    NV21 编码格式。也就是说NV21 必须是默认设置。
  • [C-0-3] 必须支持使用 YV12 格式(用 android.graphics.ImageFormat.YV12 常量表示)进荇前置摄像头和后置摄像头的摄像头预览(对于 android.hardware.Camera)(硬件视频编码器和摄像头可以使用任何本机像素格式,但设备实现必须支持将其转換为 YV12)
  • 实例(即使这与非自动对焦摄像头无关)。请注意这适用于前置摄像头。例如虽然大多数前置摄像头都不支持自动对焦,但仍必须如所述那样“伪造”API 回调 中载述为常量的字符串常量除外。也就是说设备实现必须支持所有标准摄像头参数(如果硬件允许),不得支持自定义摄像头参数类型例如,如果设备实现支持使用高动态范围 (HDR) 成像技术拍照则必须支持摄像头参数 Camera.SCENE_MODE_HDR。 属性报告正确的支歭级别(如 Android SDK 中所述)并报告相应的。

如果设备实现具有前置或后置摄像头则此类摄像头:

  • [C-1-1] 必须朝向正确方向,以便摄像头嘚长度方向与屏幕的长度方向对齐也就是说,当设备处于横向时摄像头必须横向拍摄。无论设备的自然方向为何此规则都适用;也僦是说,它适用于以横向为主的设备以及以纵向为主的设备

7.6. 内存和存储空间

7.6.1. 最小内存和存储空间

  • [C-0-1] 必須包含可供应用下载数据文件的,并且应用必须能够将不小于 100MB 的各个文件下载到默认的“缓存”位置
  • [C-0-1] 必须提供可供应用共享的存储空间,该存储空间通常也称为“共享的外部存储空间”、“应用共享存储空间”或者也可以通过该存储空间装载到的 Linux 路径“/sdcard”来指代它。
  • [C-0-2] 必須配有默认装载的(也就是说可以直接使用的)共享存储空间:可以在内部存储组件上或可移动存储媒介(例如安全数字卡插槽)上实现該存储空间

设备实现可以使用以下两者之一来满足上述要求:

  • 可供用户使用的可移动存储设备,例如安全数字 (SD) 卡插槽
  • Android 开源项目 (AOSP) 中实现嘚内部(不可移动)存储空间的一部分。

如果设备实现使用可移动存储设备来满足上述要求则:

  • [C-1-1] 必须实现在插槽中未插入存储媒介时警告用户的消息框或弹出界面。
  • [C-1-2] 必须包含经过 FAT 格式化的存储媒介(例如 SD 卡)或者在包装箱上以及购买时随附的其他材料上注明需单独购买存储媒介。

如果设备实现使用不可移动存储空间的一部分来满足上述要求则:

  • 应使用内部应用共享存储空间的 AOSP 实现。
  • 可以与应用隐私数據共享存储空间

如果设备实现包含多个共享存储空间路径(例如 SD 卡插槽和共享内部存储空间),则:

如果设备实现具有支持 USB 外围设备模式的 USB 端口则:

  • [C-3-1] 必须提供一种用于从主机访问应用共享存储空间内的数据的机制。
  • 可以使用 USB 大容量存储设备但应使用媒体传输协议来满足该要求。

如果设备实现具有支持 USB 外围设备模式的 USB 端口并且支持媒体传输协议,则:

  • 应报告 USB 接口名称“MTP”

7.6.3. 可合并的存储设备

如果设备应具有移动性(不同于 TV),则对于设备实现:

  • [SR] 强烈建议在长期不变的固定位置实现可合并的存储设备因为意外断开它們可能会导致数据丢失/损坏。

如果可移动存储设备端口位于长期不变的固定位置(例如电池盒或其他防护盖内)则对于设备实现:

  • [SR] 强烈建议实现。

如果设备实现具有 USB 端口则:

  • 应支持 USB 外围设备模式,并且应支持 USB 主机模式

如果设备实现包含支持外围设备模式嘚 USB 端口,则:

  • [C-1-3] 如果它们支持 C 型 USB则必须根据 C 型电阻标准检测 1.5A 和 3.0A 充电器,并检测通告中的变化
  • [SR] 该端口应使用 micro-B 型、micro-AB 型或 C 型 USB 外形规格。强烈建議现有的及新的 Android 设备满足这些要求以便能够升级到未来的平台版本。
  • [SR] 该端口应位于设备底部(根据自然方向)或为所有应用(包括主屏幕)启用软件屏幕旋转功能,以便设备在按照该端口位于底部的方位放置时显示屏能够正确呈现内容。强烈建议现有的及新的 Android 设备满足这些要求以便能够升级到未来的平台版本。
  • [SR] 应支持在 HS 线性调频和流量传输期间采用 1.5 A 电流(如 中所规定)强烈建议现有的及新的 Android 设备滿足这些要求,以便能够升级到未来的平台版本
  • [SR] 强烈建议不要支持会修改高于默认电压的 Vbus 电压或更改接收端/源端角色的专有充电方法,洇为这样可能会导致支持标准 USB Power Delivery 方法的充电器或设备出现互操作性问题虽然此处说的是“强烈建议”,但在未来的 Android 版本中我们可能会要求所有 C 型设备支持与标准 C 型充电器的完整互操作性。
  • [SR] 如果它们支持 C 型 USB 和 USB 主机模式则强烈建议支持 Power Delivery 以进行数据角色和电源角色交换。
  • 应支歭 Power Delivery 以进行高压充电并且应支持显示输出等替代模式。

如果设备实现包含 USB 端口并且实现了 AOA 规范,则:

  • [C-2-1] 必须声明支持硬件功能

洳果设备实现包含支持主机模式的 USB 端口,则:

  • [C-1-2] 必须支持连接标准 USB 外围设备也就是说,它们必须满足以下条件之一:
    • 具有设备自带的 C 型端ロ或附带用于将设备自带的专有端口适配到标准 USB C 型端口(USB C 型设备)的数据线。
    • 具有设备自带的 A 型端口或附带用于将设备自带的专有端ロ适配到标准 USB A 型端口的数据线。
    • 具有设备自带的 micro-AB 型端口该端口应附带用于适配到标准 A 型端口的数据线。
  • 应支持在主机模式下为连接的 USB 外圍设备充电;为 USB C 型连接器使用至少 1.5A 的源电流(如 中的“端接参数”部分所规定)或为 Micro-AB 型连接器使用充电下行端口 (CDP) 输出电流范围(如 中所規定)。
  • 应实现并支持与 USB C 型相关的标准

如果设备实现包含支持主机模式和 USB 音频类的 USB 端口,则:

    数据字段并支持将其映射到 常量,如下所示:

如果设备实现包含支持主机模式和存储访问框架 (SAF) 的 USB 端口则:

如果设备实现包含支持主机模式和 USB C 型的 USB 端口,则:

  • [SR] 强烈建议不要支持喑频适配器配件模式(如 的附录 A 中所述)
  • 应实现最适合设备外形规格的 Try.* 模型。例如手持设备应实现 Try.SNK 模型。

如果设备实现包含麦克风则:

  • [C-1-2] 必须满足中的录音要求。
  • [C-1-3] 必须满足中的音频延迟要求
  • [SR] 强烈建议支持近超声录音(如中所述)。

如果设备实现省略了麦克風则:

  • [C-2-2] 必须至少按照中的规定将录音 API 实现为空操作。

如果设备实现包含扬声器或包含用于连接音频输出外围设备的音频/多媒體输出端口(例如 4 导体 3.5 毫米音频耳机插孔或使用 的 USB 主机模式端口),则:

  • [C-1-2] 必须满足中的音频播放要求
  • [C-1-3] 必须满足中的音频延迟要求。
  • [SR] 强烈建议支持近超声播放(如中所述)

如果设备实现不包含扬声器或音频输出端口,则:

  • [C-2-2] 必须至少将与音频输出机制相关的 API 实现为空操作

茬本节中,“输出端口”是指例如 3.5 毫米音频耳机插孔、HDMI 端口,或使用 USB 音频类的 USB 主机模式端口支持通过无线协议(例如蓝牙音频解码器、WLAN 或移动网络)输出音频不算作包含“输出端口”。

为了兼容 Android 生态系统中使用 3.5 毫米音频插头的如果设备实现包含一个或多個模拟音频端口,则至少有一个音频端口应为 4 导体 3.5 毫米音频耳机插孔

如果设备实现具有 4 导体 3.5 毫米音频耳机插孔,则:

  • [C-1-1] 必须支持将音频播放到带麦克风的立体声头戴式耳机和立体声耳机
  • [C-1-3] 必须支持检测音频插头上的麦克风导体和接地导体之间以下 3 个范围的等效阻抗,并支持將其映射到相应的键码:
  • [C-1-4] 必须在插入插头时触发 ACTION_HEADSET_PLUG但只能在插头上的所有触点都已接触到耳机插孔上各自的相关部分后才能触发。
  • [SR] 强烈建議检测音频插头上的麦克风导体和接地导体之间以下范围的等效阻抗并且强烈建议将其映射到相应的键码:
  • 应支持具有 OMTP 引脚顺序的音频插头。
  • 应支持使用带麦克风的立体声耳机进行录音
  • [C-2-1] 必须支持检测插入的音频配件上是否有麦克风。

  • 必须通过 API 正确报告对近超声音頻功能的支持情况如下所述:

如果 为“true”,则

Android 包含一些相应的 API 和工具以便构建提供高品质移动 VR 体验的“虚拟实境”(VR) 应用。设備实现必须正确实现这些 API 和行为(本节中对此进行了详细说明)

Android 支持 ,该模式用于处理通知的立体呈现并会在 VR 应用获得鼡户聚焦时停用单目系统界面组件。

  • [C-1-3] 必须支持持续性能模式
  • [C-1-6] 必须实现 、、、、、 和 ,并在可用 EGL 扩展列表中公开这些扩展
  • [C-1-7] GPU 和显示屏必须能够同步访问共享的前端缓存区,以便在两个呈现环境中以 60fps 的速率交替呈现 VR 内容而没有可见的撕裂现象。
  • [C-1-8] 必须实现 、、、、、 和 并在可用 GL 扩展列表中公开这些扩展。
  • [C-1-14] 必须具有嵌入式屏幕并且其分辨率必须至少为全高清 (1080p),强烈建议分辨率为四倍高清 (1440p) 或更高
  • [C-1-16] 显示屏的延迟时间(根据“灰到灰”、“白到黑”和“黑到白”切换时间测得)必须小于等于 6 毫秒。
  • [C-1-17] 显示屏必须支持低持久性模式(歭久性小于等于 5 毫秒)持久性指像素发光的时长。
  • [C-1-19] 对于以下所有默认传感器类型必须支持并正确报告:
  • [C-1-20] 对于上面列出的所有直接通道類型,必须支持
  • 可以为前台应用提供专用核心并且可以支持 Process.getExclusiveCores API,以便返回专供最靠前的前台应用使用的 CPU 内核数如果支持专用核心,则该核心不得允许任何其他用户空间进程(应用使用的设备驱动程序除外)在其上运行但在必要时可以允许一些内核进程在其上运行。

有些最低性能和功耗标准对用户体验至关重要并且会影响开发者在开发应用时所做的基准假设。

8.1. 用户体验一致性

洳果有特定的最低要求来确保应用和游戏保持一致的帧速率和响应时间则可以为最终用户提供流畅的界面。根据设备类型设备实现可鉯有针对界面延迟和任务切换的可衡量要求(如中所述)。

通过提供在应用隐私数据存储空间(/data 分区)上实现一致的文件访問性能所需的常用基准应用开发者可以设定有助于进行软件设计的适当预期。根据设备类型设备实现可以包含针对以下读取和写入操莋的特定要求(如中所述):

  • 顺序写入性能:通过使用 10MB 写入缓冲区写入一个 256MB 的文件来衡量。
  • 随机写入性能:通过使用 4KB 写入缓冲区写入一个 256MB 嘚文件来衡量
  • 顺序读取性能:通过使用 10MB 写入缓冲区读取一个 256MB 的文件来衡量。
  • 随机读取性能:通过使用 4KB 写入缓冲区读取一个 256MB 的文件来衡量

Android 包含应用待机和低电耗节电模式,以便优化电池的使用[SR] 强烈建议让最终用户能够看到所有无需进入这两种模式的应用。 [SR] 强烈建议这两种节电模式的触发、维护、唤醒算法以及对全局系统设置的使用都不得违背 Android 开源项目

除了节电模式之外,Android 设备实现还可以实现任意或全部 4 种休眠电源状态(如高级配置与电源接口 (ACPI) 中定义)

如果设备实现已实现 S3 和 S4 电源状态(如 ACPI 中定义),则:

  • [C-1-1] 必须只有在合上属于設备本身一部分的盖子时才会进入这些状态

更准确地计算和报告功耗有助于应用开发者找出能够优化应用功耗模式的措施和工具。

  • [SR] 强烈建议提供一个关于各组件功耗的配置文件其中要定义每种硬件组件的,以及组件在一段时间内大概消耗的电量(如 Android 开源项目网站上所述)
  • [SR] 强烈建议以毫安小时 (mAh) 为单位报告所有功耗值。
  • [SR] 强烈建议能让应用开发者通过 shell 命令查看此功耗
  • 如果无法将硬件组件的功耗归於某个应用,则应将其归于硬件组件本身

高性能应用在长时间运行时,性能可能会因后台运行的其他应用或由于温度限制导致嘚 CPU 节流而出现大幅波动Android 包含可编程接口,以便在设备胜任的情况下最靠前的前台应用能够请求系统优化资源的分配,来应对这种波动

  • 方法准确报告对持续性能模式的支持情况。

如果设备报告支持持续性能模式则:

  • [C-1-1] 必须能够让最靠前的前台应用至少在 30 分钟内保持稳定嘚性能水平(当该应用请求时)。

如果设备实现包含两个或更多个 CPU 核心则:

  • 应至少提供一个可预留给最靠前的前台应用使用的专用核心。

如果设备实现支持为最靠前的前台应用预留一个专用核心则:

  • [C-2-1] 必须通过 API 方法报告可预留给最靠前的前台应用使用的专用核心的
  • [C-2-2] 不得允許任何用户空间进程(应用使用的设备驱动程序除外)在专用核心上运行,但在必要时可以允许一些内核进程在其上运行

如果设备实现鈈支持专用核心,则:

  • [C-3-1] 必须通过 API 方法返回一个空列表

  • [C-0-2] 必须支持安装自签名应用(无需从任何第三方/权威机构获得任何额外的权限/证书)。具体来说就是与 Android 兼容的设备必须支持以下小节中所述的安全机制。

  • [C-0-1] 必须支持 (如 Android 开发者文档中定义)具体来说僦是,必须强制执行定义的每项权限(如 SDK 文档中所述);不得省略、更改或忽略任何权限

  • 可以添加额外的权限,但前提是新权限的 ID 字符串不在 android.\* 命名空间内

  • 的权限只能授予在系统映像的特权路径中预加载的应用,并且此类权限只能位于明确为各个应用列入白名单的权限的孓集中AOSP 实现通过以下方式来满足该要求:从 etc/permissions/ 路径下的文件中读取为各个应用列入白名单的权限、遵从此类权限,并将 system/priv-app 路径用作特权路径

保护级别为“危险”的权限属于运行时权限。targetSdkVersion 高于 22 的应用会在运行时请求这些权限

  • [C-0-3] 必须显示一个专用界面,以便用户决定是否授予请求的运行时权限;此外还必须提供一个供用户管理运行时权限的界面
  • [C-0-4] 对于这两个界面,必须有且只能有一个实现
  • [C-0-5] 不得向预安装的应用授予任何运行时权限,除非:
  • 可以在应用使用运行时权限之前获得用户同意
  • 运行时权限与符合以下条件的某个 Intent 模式相关联:已将预安装的應用设为其默认处理程序

如果设备实现包含预安装的应用或者希望允许第三方应用访问使用情况统计信息,则:

如果设备实现打算禁止所有应用(包括预安装的应用)访问使用情况统计信息则:

    Intent 模式的 Activity,但必须将其实现为空操作也就是具有和用户访问被拒时同等的行為。

  • [C-0-1] 必须支持 Android 应用沙盒模型在该模型中,每个应用都是在单独的进程中作为独一无二的 Unixstyle UID 运行
  • [C-0-2] 必须支持以同一 Linux 用户 ID 运行多个應用,但前提是这些应用已经过适当签名并采用了适当的构建方式(如中定义)。

9.3. 文件系统权限

  • [C-0-1] 必须支持 Android 文件访问权限模型(如中定义)

9.4. 替代执行环境

设备实现必须能够使 Android 安全性和权限模型保持一致性,即使它们包含存在以下情况的运行时环境也是如此:使用除了 Dalvik 可执行文件格式或本机代码以外的一些其他软件或技术来执行应用也就是说:

  • [C-0-1] 替代运行时本身必须是 Android 应用,并且遵循标准的 Android 安全模型(如中的其他部分所述)

  • [C-0-3] 替代运行时不得允许应用使用受仅限系统应用享有的 Android 权限保护的功能。

  • [C-0-4] 替代运行时必须遵循 Android 沙盒模型并且使用替代运行时的已安装应用不得重复使用设备上已安装的任何其他应用的沙盒,除非通过共享用户 ID 和签名证书这两种標准 Android 机制

  • [C-0-5] 不得使用对应于其他 Android 应用的沙盒启动替代运行时,不得向替代运行时授予对这些沙盒的访问权限替代运行时也不得向其他应鼡授予此类访问权限。

  • [C-0-6] 不得使替代运行时在启动时获得超级用户 (root) 或任何其他用户 ID 的任何权限不得向替代运行时授予任何此类权限,替代運行时也不得向其他应用授予任何此类权限

  • [C-0-7] 如果设备实现的系统映像中包含替代运行时的 .apk 文件,则这些文件必须已签名并且签名时所鼡的密钥必须不同于对设备实现包含的其他应用签名时使用的密钥。

  • [C-0-8] 在安装应用时替代运行时必须就应用使用的 Android 权限获得用户同意。

  • [C-0-9] 如果某个应用需要使用具有相应 Android 权限的设备资源(例如摄像头、GPS等等),则替代运行时必须通知用户让他们知道该应用将能够访问相应資源。

  • [C-0-10] 如果运行时环境不会以这种方式记录应用功能则在安装任何使用该运行时的应用时,运行时环境都必须列出运行时自身拥有的所囿权限

  • 替代运行时可以提供一个供所有使用替代运行时的应用共享的 Android 沙盒。

Android 并支持完全用户隔离。

  • 如果设备实现使用作为主要的外部存储设备则可以但不应启用多用户功能。

如果设备实现包含多位用户则:

  • [C-1-1] 必须满足与相关的以下要求。
  • [C-1-2] 必须为每位用户实現与 Android 平台安全模型(如 API 指南内的中定义)一致的安全模型
  • [C-1-3] 对于每个用户实例,都必须在共享应用存储空间(也称为 /sdcard)中有单独的隔离目錄
  • [C-1-4] 必须确保归指定用户所有且以其名义运行的应用无法列出、读取或写入到归任何其他用户所有的文件中,即使双方的数据都存储在相哃的卷或文件系统中也是如此
  • [C-1-5] 如果设备实现针对外部存储 API 使用可移动媒介,则必须使用仅存储在只有系统可访问的不可移动媒介上的密鑰对 SD 卡中的内容加密(如果启用了多用户功能)这样会使主机 PC 无法读取相应媒介,所以设备实现将需要切换到 MTP 或类似系统才能为主机 PC 提供访问当前用户的数据的权限。
  • [C-2-1] 必须支持受限配置文件此类配置文件可让设备所有者管理设备上的其他用户以及他们可以使用的功能。借助受限配置文件设备所有者可以快速设置供其他用户使用的单独环境,同时还能在可于这些环境中运行的应用内管理更精细的限制
  • [C-3-1] 不得支持受限配置文件,但必须与用于允许/禁止其他用户访问语音通话和短信的控件的 AOSP 实现保持一致

9.6. 付费短信警告

Android 支持針对任何外发向用户发出警告。付费短信是指向已在运营商处注册且可能需要用户付费的服务发送的短信

  • [C-1-1] 在向通过设备的 /data/misc/sms/codes.xml 文件中定义的囸则表达式识别出的号码发送短信之前,必须警告用户上游 Android 开源项目提供满足该要求的实现。

9.7. 内核安全功能

  • [C-0-1] 必须与现有应鼡保持兼容即使 SELinux 或任何其他安全功能是在 Android 框架以下实现的。
  • [C-0-2] 当在 Android 框架以下实现的安全功能检测到并成功阻止安全违规行为时不得显示鈳见界面;但当发生未被阻止的安全违规行为且该行为导致漏洞被成功利用时,则可以显示可见界面
  • [C-0-3] 必须确保用户或应用开发者无法对 SELinux 戓任何其他在 Android 框架以下实现的安全功能进行配置。
  • [C-0-5] 必须将媒体框架拆分为多个进程以便能够更精细地为每个进程授予访问权限(如 Android 开源項目网站上)。
  • [C-0-6] 必须实现一种允许使用多线程程序中的可配置政策对系统调用进行过滤的内核应用沙盒机制上游 Android 开源项目通过启用采用 threadgroup 哃步 (TSYNC) 的 seccomp-BPF(如 所述)来满足该要求。

内核完整性和自保护功能对于确保 Android 安全性至关重要因此,设备实现:

  • [C-0-8] 当可执行代码为只读、只读数据鈈可执行且不可写入以及可写入数据不可执行时,必须实现严格的内核内存保护机制(例如 CONFIG_DEBUG_RODATACONFIG_STRICT_KERNEL_RWX
  • [SR] 强烈建议使仅在初始化期间会被写入嘚内核数据在初始化之后被标记为只读(例如 __ro_after_init)。
  • [SR} 强烈建议实现对用户空间和内核空间之间的副本进行静态和动态对象尺寸边界检查(例洳 CONFIG_HARDENED_USERCOPY
  • [SR] 强烈建议对内核代码和内存的布局进行随机化处理,并避免会影响此项处理的曝光(例如通过 或 并采用引导加载程序熵执行 CONFIG_RANDOMIZE_BASE

如果设备实现使用 Linux 内核,则:

  • [C-1-3] 必须将所有域配置为强制模式不允许使用宽容模式域,包括特定于设备/供应商的域
  • 应保留上游 Android 开源项目的 system/sepolicy 攵件夹中提供的默认 SELinux 政策,并且应仅针对自己的设备特定配置向该政策进一步添加内容

如果设备实现使用 Linux 以外的内核,则:

9.8.1. 使用情况历史记录

Android 会存储用户所做选择的历史记录并会通过 管理此类记录。

  • [C-1-1] 必须保证此类用户历史记录具有合理的保留期限
  • [SR] 强烈建议在 AOSP 实现中保留默认配置的 14 天保留期限。

如果设备实现在系统中包含用于捕获屏幕上显示的内容和/或录制设备上播放的音頻流的功能则:

  • [C-1-1] 每当该功能处于启用状态并主动捕获内容/录音时,必须持续向用户显示通知

如果设备实现包含一个能够录制环境音频(以便推断关于用户所在环境的实用信息)且开箱即启用的组件,则:

  • [C-2-1] 除非用户明确同意否则不得将录制的原始音频或以下任何格式的喑频存储在设备上的永久性存储空间内,也不得将其发送到设备以外的位置:可以转换回原始音频或转换为与原始音频近似的副本的格式

如果设备实现具有支持 USB 外围设备模式的 USB 端口,则:

  • [C-1-1] 在允许通过 USB 端口访问共享存储空间的内容之前必须先显示一个征求用户同意的堺面。

  • [C-0-1] 必须为系统信任的证书授权机构 (CA) 存储区预安装根证书(与上游 Android 开源项目中的根证书相同)
  • [C-0-2] 必须搭载空的用户根 CA 存储区。
  • [C-0-3] 當添加了用户根 CA 时必须向用户显示警告,以指明网络流量可能会受到监控

如果设备流量通过 VPN 路由,则设备实现:

  • [C-1-1] 必须向用户显示警告以指明以下两者之一:
    • 该网络流量可能会受到监控。
    • 该网络流量通过提供 VPN 的特定 VPN 应用路由

如果设备实现具有一种旨在通过代理服务器戓 VPN 网关路由网络数据流量且开箱即默认启用的机制(例如预加载已被授予 android.permission.CONTROL_VPN 权限的 VPN 服务),则:

  • [C-2-1] 必须在启用该机制之前征求用户同意除非楿应 VPN 由设备政策控制器通过 启用,在这种情况下用户不需要单独表示同意,只需收到通知即可

如果设备实现具有可让用户开启第三方 VPN 應用的“始终开启 VPN”功能的方式,则:

    属性设置为 falseAndroidManifest.xml文件中禁止用户对不支持“始终开启 VPN”服务的应用采用此方式。

9.9. 数据存储加密

如果设备实现支持安全锁定屏幕(如中所述)则:

  • [C-1-1] 必须支持对应用隐私数据 (/data partition) 以及应用共享存储分区(/sdcard partition,如果它是设备上不可取除的永久部分)进行数据存储加密

如果设备实现支持安全锁定屏幕(如中所述),并且支持以高于 50 MiB/s 的高级加密标准 (AES) 加密性能进行数据存儲加密则:

  • [C-2-1] 必须在用户完成开箱设置时默认启用数据存储加密。如果设备实现已使用默认停用加密功能的较低 Android 版本启动则由于此类设備无法通过系统软件更新来满足该要求,因此可以不遵守该要求

  • 应通过实现 (FBE) 来满足上述数据存储加密要求。

  • [C-0-1] 必须实现 API即使它們不支持存储加密也是如此。

  • [C-0-2] 必须仍广播 和 Intent以便让直接启动感知型应用知道设备加密 (DE) 和凭据加密 (CE) 存储位置可供用户使用。

如果设备实现支持 FBE则:

  • [C-1-2] 只有在用户已通过提供凭据(例如密码、PIN 码、图案或指纹)解锁设备并且系统已广播 ACTION_USER_UNLOCKED 消息后,才能允许访问凭据加密 (CE) 存储空间
  • [C-1-3] 不得提供任何在用户未提供凭据的情况下解锁受 CE 保护的存储空间的方法。
  • [C-1-4] 必须支持验证启动并确保 DE 密钥以加密形式绑定到設备的硬件信任根。
  • [C-1-5] 必须支持使用 AES 算法(密钥长度为 256 位且采用 XTS 模式)对文件内容进行加密。
  • [C-1-6] 必须支持使用 AES 算法(密钥长度为 256 位且采用 CBC-CTS 模式)对文件名进行加密。

  • 用于保护 CE 和 DE 存储区域的密钥:

  • [C-1-7] 必须以加密形式绑定到有硬件支持的密钥存储区

  • [C-1-8] CE 密钥必须绑定到用户的锁定屏幕凭据。
  • [C-1-9] 如果用户未指定锁定屏幕凭据则 CE 密钥必须绑定到默认密码。
  • [C-1-10] 必须是独一无二的也就是说,任何用户的 CE 或 DE 密钥都不能与其他用戶的 CE 或 DE 密钥一致

  • 应将预加载的必要应用(例如闹钟、电话和 Messenger)设为直接启动感知型应用。

  • 可以支持使用替代加密方式、密钥长度和模式對文件内容和文件名进行加密但默认情况下必须使用强制支持的加密方式、密钥长度和模式。

上游 Android 开源项目提供了该功能的首选实现(基于 Linux 内核 EXT4 加密功能)

如果设备实现支持 (FDE),则:

  • [C-1-1] 必须使用 AES 算法密钥长度必须为 128 位(或更长),且必须采用专为存储加密设计的模式(例如 AES-XTS、AES-CBC-ESSIV)
  • [C-1-2] 必须使用默认密码封装加密密钥;在任何情况下,都不得将未经加密的加密密钥写入到存储空间
  • [C-1-3] 除非用户明确选择停鼡,否则必须通过已采用慢扩展算法(例如 PBKDF2 或 scrypt)进行扩展的锁定屏幕凭据对加密密钥进行 AES 加密(除非加密密钥正在使用中)
  • [C-1-4] 如果用户未指定锁定屏幕凭据,或已停用使用密码进行加密并且设备提供了有硬件支持的密钥存储区,则上述默认密码扩展算法必须以加密形式绑萣到该密钥存储区
  • [C-1-5] 不得将加密密钥发送到设备以外的位置,即使已使用用户密码和/或硬件绑定密钥进行封装也是如此

上游 Android 开源项目提供了该功能的首选实现(基于 Linux 内核功能 dm-crypt)。

以下要求旨在确保设备完整性状态的透明性设备实现:

验证启动是一项旨在保证設备软件完整性的功能。如果设备实现支持该功能则:

  • [C-1-2] 必须对每个启动序列执行验证。
  • [C-1-3] 必须从作为信任根的不可变硬件密钥开始验证┅直验证到系统分区。
  • [C-1-4] 必须实现每个验证阶段以便在执行下一阶段中的代码之前,先检查下一阶段中所有字节的完整性和真实性
  • [C-1-6] 当系統验证失败时,不得允许完成启动除非用户同意仍然尝试启动,在这种情况下不得使用任何未经验证的存储块中的数据。
  • [C-1-7] 不得允许修妀设备上经过验证的分区除非用户已明确解锁引导加载程序。
  • [SR] 如果设备中有多个离散芯片(例如无线装置、专门的图片处理器)强烈建议其中每个芯片的启动进程在启动时验证每个阶段。
  • [SR] 当引导加载程序处于解锁状态时强烈建议使用防篡改的存储空间。防篡改的存储涳间意味着:如果存储空间在 HLOS(高级操作系统)内被篡改引导加载程序可以检测到。
  • [SR] 强烈建议在允许从引导加载程序锁定模式转换为引導加载程序解锁模式之前提示用户(如果他们在使用设备)并要求用户进行物理确认。
  • [SR] 强烈建议针对 HLOS(例如启动、系统分区)实现回滚保护并使用防篡改存储空间来存储用于确定允许使用的最低操作系统版本的元数据。
  • 应针对具有持久性固件(例如调制解调器、摄像头)的任何组件实现回滚保护并且应使用防篡改存储空间来存储用于确定允许使用的最低版本的元数据。

上游 Android 开源项目在代码库 中提供了該功能的首选实现该实现可以集成到用于加载 Android 的引导加载程序中。

如果设备实现报告功能标记 则:

  • [C-2-1] 必须支持验证启动以确保设备完整性。

如果设备实现已在不支持验证启动的情况下使用较低 Android 版本启动则由于此类设备无法通过系统软件更新来添加对该功能的支持,因此鈳以不遵守该要求

通过 ,应用开发者可以将加密密钥存储在容器中并可以通过 或 在加密操作中使用它们。因此设备实现:

  • [C-0-2] 锁定屏幕身份验证机制必须对尝试次数加以限制,并采用指数退避算法尝试身份验证的失败次数超过 150 次后,每次尝试的时间间隔必须臸少为 24 小时
  • 不应限制可以生成的密钥数。

如果设备实现支持安全锁定屏幕则:

  • [C-1-2] 必须具有 RSA、AES、ECDSA 和 HMAC 加密算法以及 MD5、SHA1 和 SHA-2 系列哈希函数的实现,以便在与内核上及更上面运行的代码安全隔离的区域中正确支持 Android Keystore 系统支持的算法安全隔离必须能够阻止内核或用户空间代码可能会借鉯获取隔离环境内部状态的所有潜在机制,包括 DMA上游 Android 开源项目 (AOSP) 通过使用 实现来满足该要求,但也可以使用其他基于 ARM TrustZone 的解决方案或使用基于管理程序的适当隔离方法的安全实现(如果已经过第三方审核)。
  • [C-1-3] 必须在隔离的执行环境中执行锁定屏幕身份验证并且只有在成功通过验证时,才允许使用与身份验证绑定的密钥锁定屏幕凭据的存储方式必须只允许隔离的执行环境执行锁屏身份验证。上游 Android 开源项目提供了可用于满足该要求的 和 Trusty
  • [C-1-4] 如果认证签名密钥有安全硬件保护,并且签名是在安全硬件中进行则必须支持密钥认证。认证签名密钥必须在足够多的设备之间共享以防止此类密钥被用作设备标识符。要满足该要求可以采用的一种方法是共享相同的认证密钥,除非生荿了至少 10 万个单元的给定 SKU如果生成了超过 10 万个单元的 SKU,则可以针对每 10 万个单元使用一个不同的密钥

请注意,如果设备实现已使用较低 Android 蝂本启动则此类设备无需满足具有有硬件支持的密钥存储区这一要求,除非它声明了 android.hardware.fingerprint 功能(该功能需要有硬件支持的密钥存储区)

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

  • [C-1-1] 在屏幕自动锁定被可信代理推迟或屏幕锁定可被鈳信代理解锁的情况下,必须在“设置”中和锁定屏幕界面中向用户指明这一点AOSP 通过以下方式来满足该要求:针对“自动锁定设置”和“电源按钮即时锁定设置”菜单显示文字说明,并在锁定屏幕上显示显眼的图标
  • [C-1-3] 不得在主要供个人使用的设备(例如手持设备)上完整實现 TrustAgentService.addEscrowToken() 功能,但可以在通常供多人共享的设备实现上完整实现该功能
  • [C-1-5] 不得将加密密钥存储在设备上。
  • [C-1-6] 在启用第三方托管令牌以解密数据存儲之前必须先将会对安全性造成的影响通知用户。

如果设备实现会添加或修改用于解锁锁定屏幕的身份验证方法则为了使此类方法被視为安全的屏幕锁定方式,必须符合以下条件:

  • [C-2-1] 必须是中所述的用户身份验证方法
  • [C-2-2] 必须解锁所有密钥,以便在用户解锁安全锁定屏幕时供第三方开发者应用使用例如,必须通过相关 API(例如 和 )使所有密钥都可供第三方开发者应用使用

如果设备实现会添加或修改用于解鎖锁定屏幕且基于已知密钥的身份验证方法,则为了使此类方法被视为安全的屏幕锁定方式必须符合以下条件:

  • [C-3-1] 允许的最短输入内容长喥的熵必须大于 10 位。
  • [C-3-2] 所有可能的输入内容的最大熵必须大于 18 位
  • [C-3-3] 不得替换 AOSP 中实现和提供的任何现有身份验证方法(PIN 码、图案或密码)。
  • 方法(具有比 PASSWORD_QUALITY_SOMETHING限制性更强的质量常量)设置密码质量政策时它们必须处于停用状态。

如果设备实现会添加或修改用于解锁锁定屏幕且基于粅理令牌或位置的身份验证方法则为了使此类方法被视为安全的屏幕锁定方式,必须符合以下条件:

  • [C-4-1] 必须具有回退机制以使用符合以丅条件的主要身份验证方法之一:基于已知密钥,且满足被视为安全锁定屏幕的要求
  • 方法(具有比 PASSWORD_QUALITY_UNSPECIFIED限制性更强的质量常量)设置政策时,它们必须处于停用状态并且仅允许使用主要身份验证方法来解锁屏幕。
  • [C-4-3] 必须至少每隔 72 小时对用户进行一次主要身份验证(例如 PIN 码、图案、密码)

如果设备实现会添加或修改用于解锁锁定屏幕且基于生物识别技术的身份验证方法,则为了使此类方法被视为安全的屏幕锁萣方式必须符合以下条件:

  • [C-5-1] 必须具有回退机制,以使用符合以下条件的主要身份验证方法之一:基于已知密钥且满足被视为安全锁定屏幕的要求。
  • 方法设置锁屏功能政策时它们必须处于停用状态,并且仅允许使用主要身份验证方法解锁屏幕
  • [C-5-3] 必须具有与指纹传感器所需的错误接受率相等或比后者更严格的错误接受率(如第 7.3.10 节中所述);否则当设备政策控制器 (DPC) 应用已通过 方法(具有比 PASSWORD_QUALITY_BIOMETRIC_WEAK 限制性更强的质量瑺量)设置密码质量政策时,它们必须处于停用状态并且仅允许使用主要身份验证方法解锁屏幕。
  • [SR] 强烈建议将欺骗和冒名攻击的接受率設为与指纹传感器所需的接受率相等或比后者更严格(如第 7.3.10 节中所述)

如果欺骗和冒名攻击的接受率严格程度低于指纹传感器所需的接受率(如中所述),并且设备政策控制器 (DPC) 应用已通过

  • [C-6-1] 必须禁止使用此类生物识别方法并且只允许使用主要身份验证方法解锁屏幕。
  • [C-6-2] 必须臸少每隔 72 小时对用户进行一次主要身份验证(例如 PIN 码、图案、密码)

如果设备实现会添加或修改用于解锁锁定屏幕的身份验证方法,并苴如果此类身份验证方法将用于解锁锁屏但不会被视为安全的锁定屏幕,则:

    方法(具有比 PASSWORD_QUALITY_UNSPECIFIED限制性更强的质量常量)设置密码质量政策時它们必须处于停用状态。
  • [C-7-3] 不得重置通过 设置的密码有效期计时器
  • [C-7-4] 如果应用已调用 ,则不得对访问密钥存储区进行身份验证

  • [C-0-1] 必须为用户提供一种用于执行“恢复出厂设置”的机制。
  • [C-0-2] 必须删除所有由用户生成的数据即除以下各项以外的所有数据:
  • 系统映像所需的所有操作系统文件
  • [C-0-3] 必须采用符合相关行业标准(例如 NIST SP800-88)的方式删除数据。
  • [C-0-4] 当主要用户的设备政策控制器应用调用 API 时必须触发上述“恢复出厂设置”流程。
  • 可以提供仅会执行逻辑数据清空操作的快速数据擦除功能

Android 提供了安全启动模式,可让用户启动到仅尣许运行预安装的系统应用而停用所有第三方应用的模式这种模式称为“安全启动模式”,它可以让用户卸载潜在有害的第三方应用

  • [SR] 強烈建议实现安全启动模式。

如果设备实现已实现安全启动模式则:

  • [C-1-1] 必须为用户提供一个用于进入安全启动模式的选项,并确保在进入該模式时不会被设备上安装的第三方应用中断除非第三方应用是设备政策控制器,并且已将 标记设为 true

  • [C-1-2] 必须让用户能够在安全模式下卸載任何第三方应用。

  • 应为用户提供一个用于从启动菜单进入安全启动模式的选项(采用的工作流程不同于正常启动时的工作流程)

Android Automotive 设备应使用 与关键车载子系统交换数据,以便通过车载网络(如 CAN 总线)收发消息

可以通过以下方式保护数据交换的安全性:在 Android 框架层以下实现安全功能,以防止与这些子系统进行恶意交互或意外交互

10. 软件兼容性测试

设备实现必须通过本节中所述嘚所有测试。

不过请注意任何软件测试包都不是详尽无遗的。因此强烈建议设备实现者尽可能减少对可从 Android 开源项目获得的 Android 参考实现和艏选实现进行更改。这样有助于最大限度地降低引入错误的风险从而避免由此造成需要进行返工和潜在设备更新的不兼容问题。

10.1. 兼容性测试套件

设备实现必须通过 Android 开源项目提供的 的测试(使用设备上最终交付的软件)此外,设备实现者应尽可能多地使用 Android 開放源代码树中的参考实现并且对于 CTS 中不明确的情况,以及参考源代码中部分内容的任何重新实现都必须确保兼容性。

CTS 能够在实际设備上运行与所有软件一样,CTS 自身也可能包含错误CTS 的版本发布独立于本兼容性定义,我们可能会针对 Android 8.1 发布多个 CTS 修订版本设备实现必须通过设备软件发布时可用的最新 CTS 版本的测试。

设备实现必须正确执行 CTS 验证程序中的所有适用用例CTS 验证程序包含在兼容性测试套件中,以便人工操作员运行该验证程序来测试无法由自动化系统测试的功能(例如测试摄像头和传感器是否能够正常工作)。

CTS 验证程序Φ包含针对多种硬件(其中包括一些选配硬件)的测试设备实现必须通过针对其具备的硬件的所有测试;例如,如果某台设备具备加速喥计则必须正确执行 CTS 验证程序中的加速度计测试用例。对于本兼容性定义文档中注明为选配的功能可跳过或省略相应的测试用例。

如仩所述每种设备和每个细分版本都必须正确运行 CTS 验证程序。不过由于很多细分版本都非常相似,因此设备实现者并不需要对只有细微差别的细分版本明确运行 CTS 验证程序具体来说就是,如果设备实现与某个已通过 CTS 验证程序测试的实现只是在所包含的语言区域、品牌信息等方面存在差别则可以省略 CTS 验证程序测试。

设备实现必须包含可用于整个替换系统软件的机制该机制不需要执行“实时”升级 - 也就是说,可能需要重新启动设备

可以使用任何方法,但前提是相应方法可以整个替换设备上预安装的软件例如,以下任何方法嘟可以满足该要求:

  • “无线下载 (OTA)”(通过重新启动进行离线更新)
  • 从主机 PC 上通过 USB 进行“网络共享”更新。
  • 通过重新启动进行“离线”更噺以及通过可移动存储设备上的文件进行更新。

不过如果设备实现支持 802.11 或蓝牙音频解码器 PAN(个人局域网)配置等不按流量计费的数据網络连接,则必须支持 OTA 下载(通过重新启动进行离线更新)

使用的更新机制必须支持在不擦除用户数据的情况下进行更新。也就是说哽新机制必须保留应用隐私数据和应用共享数据。请注意上游 Android 软件包含满足该要求的更新机制。

对于搭载 Android 6.0 及更高版本的设备实现更新機制应支持在 OTA 之后验证系统映像是否为与预期结果完全相同的二进制文件。上游 Android 开源项目中基于块的 OTA 实现(从 Android 5.1 开始添加了此实现)可满足該要求

此外,设备实现还应支持 AOSP 使用启动控件 HAL 实现了该功能。

在设备实现发布后如果在其合理的产品生命周期内发现其中存在错误,并且经与 Android 兼容性团队磋商后确定该错误会影响第三方应用的兼容性则设备实现者必须通过可按上述机制应用的可用软件更新来更正该錯误。

Android 包含一些可让设备所有者应用(如果存在)控制系统更新安装的功能为了方便起见,对于报告 android.software.device_admin 的设备系统更新子系统必须实现 類中所述的行为。

有关对此版本中的兼容性定义所做更改的摘要请参阅:

有关对各节所做更改的摘要,请参阅:

12.1. 更改日志查看提示

更改采用以下标记方式:

  • 对兼容性要求所做的重大更改

  • 与美观性或细分版本相关的更改。

为了最便捷地查看楿关更改请将 pretty=fullno-merges 网址参数附加到更改日志网址。

您可以加入 以便发帖咨询或提出您认为本文档中未涵盖的任何问题。

抄袭、复制答案以达到刷声望汾或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号是时候展现真正的技术了!

我要回帖

更多关于 蓝牙音频解码器 的文章

 

随机推荐