Android 16 兼容性定义 - 仅含更改内容

上次更新时间:2025 年 12 月 2 日

2. 设备类型

2.2. 手持设备相关要求

2.2.1. 硬件

Android 16 中新增的要求开始

如果手持设备实现声明支持任何 64 位 ABI(无论是否支持任何 32 位 ABI),并针对 ActivityManager.isLowRamDevice() 返回 false,则:

  • [7.1.4.2/H-2-1] 必须支持 Vulkan 1.1。

2.2.3. 软件

Android 16 中新增的要求开始

当应用符合所有推广特征时,可以推广应用的实时动态通知。在本文档中,此类通知称为“推广的实时动态通知”。手持设备实现必须按照以下要求,以醒目的方式显示推广的实时动态通知

如果手持设备实现声明 API 级别为 36.1 或更高级别,则:

  • [3.8.3.1/H-0-1] 必须在锁定屏幕上的醒目位置显示推广的实时动态通知。

  • [3.8.3.1/H-0-12] 当与其他通知一起显示时,推广的实时动态通知必须作为浮动通知显示在通知堆栈顶部,且必须显示在彩色通知(其中 setColorizedtrue)上方。

    • 当有多个应用符合推广的实时动态通知的条件时,可能会确定在通知栏和锁定屏幕中显示推广的实时动态通知的顺序。
  • [3.8.3.1/H-0-2] 必须以展开状态显示推广的实时动态通知。

  • [3.8.3.1/H-0-3] 不得提供任何方式,让用户能够收起上述展开的通知。

  • [3.8.3.1/H-0-4] 必须在推广的实时动态通知中显示使用 StyleSpanUnderlineSpan 规定的文本内容基本样式(粗体、斜体和下划线)。

  • [3.8.3.1/H-0-5] 在推广的实时动态通知中,必须仅显示标准操作对象(通过 Notification.Action),并且必须隐藏输入框、“回复”按钮和关联操作等非标准操作对象(通过 addRemoteInput()setContextual()),即使通知中包含这些对象也是如此。

  • [3.8.3.1/H-0-6] 必须以紧凑的表示形式(在 SDK 文档中也称为状态条状标签)显示推广的实时动态通知,且其中必须包含 Notification.getSmallIcon()

    • [3.8.3.1/H-0-7] 在使用紧凑的表示形式时,其他字段都是可选字段。但只要紧凑的表示形式可以展开,就必须显示 Notification.getShortCriticalText()(如有)或 Notification.when(如无 Notification.getShortCriticalText)。

    • [3.8.3.1/H-0-8] 如有多个推广的实时动态通知,则必须在状态栏中,以紧凑的表示形式显示至少一个。

    • [3.8.3.1/H-0-9] 当用户点按紧凑的表示形式时,必须显示关联的通知(首选)或打开关联的应用(通过 Notification.contentIntent)。

    • [3.8.3.1/H-0-13] 必须在关联的通知中显示与通知栏中的可见内容完全相同的内容。

  • [3.8.3.1/H-0-10] 必须提供一种方式,让用户能够为单个应用的通知停用和启用推广显示。

  • [3.8.3.1/H-0-11] 必须正确呈现所有实时动态通知,包括但不限于不符合或仅部分符合推广特征的非推广实时动态通知。 此类非推广通知必须以非推广状态显示。

2.2.5. 安全模型

Android 16 中移除的要求开始

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

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

Android 16 中移除的要求开始

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

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

2.5. Automotive 设备相关要求

2.5.1. 硬件

Automotive 设备实现:

Android 16 中新增的要求开始

  • [7.1.1.1/A-0-3] 必须支持图形缓冲区的 GPU 合成,其大小至少与任何内置屏幕的最高分辨率一样大。

Android 16 中新增的要求开始

如果 Automotive 设备实现支持 Vulkan,则:

Android 16 中新增的要求开始

如果 Automotive 设备实现声明通过 Configuration.isScreenHdr() 支持高动态范围屏幕,则:

  • [7.1.4.5/A-1-1] 必须通告对 EGL_EXT_gl_colorspace_bt2020_pqEGL_EXT_surface_SMPTE2086_metadataEGL_EXT_surface_CTA861_3_metadataVK_EXT_swapchain_colorspaceVK_EXT_hdr_metadata 扩展的支持。

Android 16 中新增的要求开始

Automotive 设备实现:

  • [7.1.4.6/A-0-1] 必须通过系统属性 graphics.gpu.profiler.support 报告设备是否支持 GPU 性能剖析功能。

如果 Automotive 设备实现通过系统属性 graphics.gpu.profiler.support 声明支持,则:

Android 16 中新增的要求开始

Automotive 设备实现:

  • [7.1.5/A-0-1] 必须支持上游 Android 开源代码所实现的旧应用兼容模式。也就是说,设备实现不得更改启用兼容模式的触发条件或阈值,也不得更改兼容模式本身的行为。

Android 16 中新增的要求开始

如果 Automotive 设备实现包含在外围设备模式下运行的控制器的 USB 端口,则:

  • [7.7.1/A-1-1] 必须实现 Android Open Accessory (AOA) API。

Android 16 中新增的要求开始

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

Android 16 中新增的要求开始

在连接 USB 外围设备期间调用 AudioManager.getDevices() API 时:

2.5.3. 软件

Automotive 设备实现:

Android 16 中新增的要求开始

Android 16 中新增的要求开始

如果 Automotive 设备实现的设置应用通过 activity 嵌入实现分屏功能,则:

Android 16 中新增的要求开始

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

2.5.4. 性能与功耗

Android 16 中添加了要求开头

  • [8.1/A-0-1] 一致的帧延迟。帧延迟或帧渲染延迟不一致的发生频率不得超过每秒 5 帧,并且应低于每秒 1 帧。

  • [8.1/A-0-2] 界面延迟。设备实现必须确保实现低延迟用户体验,具体方式是确保滚动完包含 10K 个列表条目的列表(具体定义详见 Android 兼容性测试套件 [CTS])所用的时间不超过 36 秒。

  • [8.1/A-0-3] 任务切换。 在启动了多个应用的情况下,如果重新启动已启动且已在运行的应用,所用时间不得超过 1 秒。

Automotive 设备实现:

Android 16 中新增的要求开始

  • [8.2/A-0-2] 必须确保顺序写入性能至少为 5 MB/s。

  • [8.2/A-0-3] 必须确保随机写入性能至少为 0.5 MB/s。

  • [8.2/A-0-4] 必须确保顺序读取性能至少为 15 MB/s。

  • [8.2/A-0-5] 必须确保随机读取性能至少为 3.5 MB/s。

Android 16 中新增的要求开始

如果 Automotive 设备实现针对 android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS 返回 android.os.Build.VERSION_CODES.U 或更高版本,则:

  • [8.2/A-1-1] 必须确保顺序写入性能至少为 150 MB/s。

  • [8.2/A-1-2] 必须确保随机写入性能至少为 10 MB/s。

  • [8.2/A-1-3] 必须确保顺序读取性能至少为 250 MB/s。

  • [8.2/A-1-4] 必须确保随机读取性能至少为 100 MB/s。

  • [8.2/A-1-5] 必须确保具有 2 倍读取和 1 倍写入性能的并行顺序读写性能至少为 50 MB/s。

2.5.5. 安全模型

如果 Automotive 设备实现支持多个用户,则:

Android 16 中新增的要求开始

如果 Automotive 设备实现支持系统 API VisualQueryDetectionService 或其他查询检测机制,而无需显示麦克风和/或摄像头访问指示,则:

  • [9.8/A-1-1] 必须确保查询检测服务只能将数据传输到系统、ContentCaptureService 或设备端语音识别服务(由 SpeechRecognizer#createOnDeviceSpeechRecognizer() 创建)。

  • [9.8/A-1-2] 不得允许将任何音频或视频信息传输到 VisualQueryDetectionService 之外(传输到 ContentCaptureService 或设备端语音识别服务的情况除外)。

  • [9.8/A-1-3] 当设备检测到用户有意与数字助理应用互动时(例如通过摄像头检测用户活跃状态),必须在系统界面中向用户显示通知。

  • [9.8/A-1-4] 在检测到用户查询后,必须立即显示麦克风指示标志,并在界面中显示检测到的用户查询。

  • [9.8/A-1-5] 不得允许用户可安装的应用提供可视化查询检测服务。

3. 软件

3.4. Web 兼容性

3.4.1. WebView 兼容性

如果设备实现提供 android.webkit.Webview API 的完整实现,则:

Android 16 中更改的要求开始

  • [C-1-3] 对于以 SDK 级别 35 及更低级别为目标平台的应用,WebView 报告的用户代理字符串必须采用以下格式:

    Mozilla/5.0 (Linux; Android $(VERSION); \[$(MODEL)\] \[Build/$(BUILD)\]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36

    • $(VERSION) 字符串的值必须与 android.os.Build.VERSION.RELEASE 的值相同。

    • $(MODEL) 字符串可以为空,但如果不为空,则其值必须与 android.os.Build.MODEL 的值相同。

    • “Build/$(BUILD)”可以省略,但如果存在,则 $(BUILD) 字符串的值必须与 android.os.Build.ID 的值相同。

    • $(CHROMIUM_VER) 字符串的值必须是上游 Android 开源项目中的 Chromium 的版本。

    • 设备实现可以在用户代理字符串中省略 Mobile。

Android 16 中更改的要求开始

3.8. 界面兼容性

3.8.14. 多窗口模式

Android 16 中移除的要求开始

3.9. 设备管理

3.9.1. 设备配置

3.9.1.2. 受管资料配置

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

Android 16 中更改的要求开始

3.9.4 设备政策管理角色要求

Android 16 中更改的要求开始

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

  • [C-1-1] 必须支持第 9.1 节中定义的设备政策管理角色。可以通过以下方法来定义持有设备政策管理角色的应用:将 config_devicePolicyManagement 设为软件包名称。除非应用是预装的,否则软件包名称必须后跟英文冒号 (:) 和签名证书。

3.9.5. 设备政策解决框架

Android 16 中更改的要求开始

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

3.18. 通讯录

Android 16 中更改的要求开始

自定义本地账号:是指如下原始联系人的账号:仅存储在设备上、不与 AccountManager 中的账号关联,且创建时 ACCOUNT_NAMEACCOUNT_TYPE 列的至少有一个为非 null。

如果设备实现使用自定义本地账号,则:

Android 16 中更改的要求开始

  • [C-1-3] 由第三方应用通过默认本地账号插入的原始联系人(即,为 ACCOUNT_NAMEACCOUNT_TYPE 设置 null 值)必须插入自定义本地账号中。

  • [C-1-3] 由第三方应用插入的原始联系人(未指定账号)必须插入到设备的默认联系人账号中。如果默认联系人账号为 DEFAULT_ACCOUNT_STATE_LOCALDEFAULT_ACCOUNT_STATE_NOT_SET,则必须将这些原始联系人存储在自定义本地账号中。

5. 多媒体兼容性

5.1. 媒体编解码器

5.1.3. 音频编解码器详细信息

Android 16 中更改了要求开头
格式/编解码器 详细信息 支持的文件类型/容器格式
G.711 μ-law 和 A-law 支持采样率为 8 kHz 的单声道/立体声/5.1 内容
  • WAVE (.wav)
MPEG-4 AAC Profile
(AAC LC)
支持单声道/立体声/5.0/5.1 内容,标准采样率为 8-48 kHz。
  • 3GPP (.3gp)
  • MPEG-4(.mp4、.m4a)
  • ADTS 原始 AAC(.aac,不支持 ADIF)
  • MPEG-TS(.ts,不可查找,仅适用于解码)
  • Matroska(.mkv,仅适用于解码)
MPEG-4 HE AAC 配置文件 (AAC+) 支持单声道/立体声/5.0/5.1 内容,标准采样率为 16-48 kHz。
  • 3GPP (.3gp)
  • MPEG-4(.mp4、.m4a)
MPEG-4 HE AACv2
Profile(增强型 AAC+)
支持单声道/立体声/5.0/5.1 内容,标准采样率为 16-48 kHz。
  • 3GPP (.3gp)
  • MPEG-4(.mp4、.m4a)
AAC ELD(增强型低延迟 AAC) 支持单声道/立体声内容,标准采样率为 16-48 kHz。
  • 3GPP (.3gp)
  • MPEG-4(.mp4、.m4a)
USAC 支持单声道/立体声内容,标准采样率为 7.35-48 kHz。 MPEG-4(.mp4、.m4a)
AMR-NB 4.75-12.2 kbps,采样率为 8 kHz 3GPP (.3gp)
AMR-WB 有 9 个比特率(介于 6.60-23.85 kbit/s)可供选择,采样率为 16 kHz(如 AMR-WB、自适应多速率 - 宽带语音编解码器中所定义) 3GPP (.3gp)
FLAC 对于编码器和解码器:必须至少支持单声道和立体声模式。必须支持高达 192 kHz 的采样率;必须支持 16 位和 24 位分辨率。FLAC 24 位音频数据处理必须具有浮点音频配置。
  • FLAC (.flac)
  • MPEG-4(.mp4 和 .m4a,仅适用于解码)
  • Matroska(.mkv,仅适用于解码)
MP3 单声道/立体声 8-320 Kbps 恒定 (CBR) 或可变比特率 (VBR)
  • MP3 (.mp3)
  • MPEG-4(.mp4 和 .m4a,仅适用于解码)
  • Matroska(.mkv,仅适用于解码)
MIDI MIDI 类型 0 和 1。DLS 版本 1 和 2。XMF 和 Mobile XMF。支持铃声格式 RTTTL/RTX、OTA 和 iMelody
  • 类型 0 和 1(.mid、.xmf、.mxmf)
  • RTTTL/RTX(.rtttl、.rtx)
  • iMelody (.imy)
Vorbis 解码:支持单声道、立体声、5.0 和 5.1 内容,采样率为 8000、12000、16000、24000 和 48000 Hz。
编码:支持单声道和立体声内容,采样率为 8000、12000、16000、24000 和 48000 Hz。
  • Ogg (.ogg)
  • MPEG-4(.mp4 和 .m4a,仅适用于解码)
  • Matroska (.mkv)
  • Webm (.webm)
PCM/WAVE PCM 编解码器必须支持 16 位线性 PCM 和 16 位浮点。WAVE 提取器必须支持 16 位、24 位、32 位线性 PCM 和 32 位浮点(比特率最高可达到硬件上限)。必须支持 8 kHz 至 192 kHz 的采样率。 WAVE (.wav)
Opus 解码:支持单声道、立体声、5.0 和 5.1 内容,采样率为 8000、12000、16000、24000 和 48000 Hz。
编码:支持单声道和立体声内容,采样率为 8000、12000、16000、24000 和 48000 Hz。
  • Ogg (.ogg)
  • MPEG-4(.mp4 和 .m4a,仅适用于解码)
  • Matroska (.mkv)
  • Webm (.webm)

5.5. 音频播放

5.5.4. 音频分流 (offload)

如果设备实现支持音频分流播放,则:

Android 16 中新增的要求开始

  • [C-SR-2] 强烈建议针对 AAC、MP3、OPUS 和 PCM 格式实现分流播放。

5.6. 音频播放

Android 16 中更改的要求开始
设备和声明 RTL(毫秒) MAD(毫秒) 环回路径
手持 250 200 30 25 扬声器/麦克风、模拟 3.5 毫米(如果支持)、USB(如果支持)
>= MPC_T (13) 80 15 至少一条路径
FEATURE_AUDIO_LOW_LATENCY 50 10 至少一条路径
FEATURE_AUDIO_PRO 25 5 至少一条路径
FEATURE_AUDIO_PRO 20 5 模拟(如果支持)
FEATURE_AUDIO_PRO 25 5 USB(如果支持模拟)

5.12. HDR 视频

如果设备实现包含支持 FEATURE_HdrEditing 的编解码器,则设备:

Android 16 中新增的要求开始

HDR 显示屏要求

如果设备实现接收使用 ADATASPACE_TRANSFER_HLG 编码的缓冲区内容,并且该内容通过 SurfaceControl.Transaction#setBuffer 发送到显示屏,则:

  • [C-8-1] 必须遵循 BT. 2408-7 中的图像白色建议,并且显示内容时仅最多比 SDR 内容大 4.926 倍。

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

6.1. 开发者工具

设备实现:

Android 16 中更改的要求开始

  • [C-0-10] 记录时不得有任何遗漏,并使以下事件可供 cmd stats shell 命令和 StatsManager 系统 API 类访问和使用。
    • ActivityForegroundStateChanged
    • AnomalyDetected
    • AppBreadcrumbReported
    • AppCrashOccurred
    • AppStartOccurred
    • BatteryLevelChanged
    • BatterySaverModeStateChanged
    • BleScanResultReceived
    • BleScanStateChanged
    • ChargingStateChanged
    • DeviceIdleModeStateChanged
    • ForegroundServiceStateChanged
    • GpsScanStateChanged
    • InputDeviceUsageReported
    • JobStateChanged
    • KeyboardConfigured
    • KeyboardSystemsEventReported
    • PluggedStateChanged
    • PressureStallInformation
    • ScheduledJobStateChanged
    • ScreenStateChanged
    • SyncStateChanged
    • SystemElapsedRealtime
    • TouchpadUsage
    • UidProcessStateChanged
    • WakelockStateChanged
    • WakeupAlarmOccurred
    • WifiLockStateChanged
    • WifiMulticastLockStateChanged
    • WifiScanStateChanged

7. 硬件兼容性

7.1. 显示和图形

7.1.3. 屏幕方向

如果设备实现支持两种屏幕方向,则:

Android 16 中移除了要求开头

  • [C-1-1] 必须支持按应用动态设置屏幕方向(纵向或横向)。也就是说,设备必须遵从应用对特定屏幕方向的要求。

7.3. 传感器

7.3.5. 气压计

Android 16 中新增的要求开始

如果设备实现声明了系统属性 sensor.barometer.high_quality.implemented,则:

  • [C-2-1] 必须报告 300 hPa 到 1100 hPa 之间的压力测量结果,绝对精度为 +/- 1 hPa。

  • [C-2-2] 在 100 hPa 范围内,相对精度必须为 0.15 hPa,相当于在海平面上 1000 m 左右的变化误差不超过 1 m 左右。

  • [C-2-3] 当用户点按、按下或挤压设备时,必须在 +/- 0.5 hPa 范围内保持稳定。

  • [C-2-4] 当用户手持设备或将设备放在口袋中行走时,必须在 +/- 0.15 hPa 范围内保持稳定。

  • [C-2-5] 对于超过 5 Hz 的启用,平滑时间常数不得超过 300 ms,并且平滑在传感器多次启用之间不得出现泄漏。

  • [C-2-6] 在受到蓝牙、移动网络连接或 Wi-Fi 等常见来源引入的日常照明和射频的影响时,必须保持在 +/- 0.15 hPa 以内。

7.3.14. 自定义传感器 [新增部分]

Android 16 中新增的要求开始

为了提供差异化体验,设备实现可以包含 Android 或 Wear OS 未涵盖的其他传感器,预加载应用可以访问这些传感器。

对于这类传感器,传感器 ID 具有以下特性:

  • [C-0-1] 必须高于 65536。

如果自定义传感器用于健康或健身相关用途,则:

  • [C-0-2] 必须由平台权限或系统权限进行保护。

7.4. 数据连接

7.4.3. 蓝牙

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

Android 16 中新增的要求开始

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

  • [C-11-1] 必须报告硬件功能标志 android.hardware.bluetooth_le.channel_sounding

  • [C-11-2] 必须在 1 米的距离上使用累积分布函数计算得出的第 90 个百分位处将报告精确到 +/- 0.5 米以内。

7.5. 相机

Android 16 中新增的要求开始

如果设备实现包含至少一个摄像头,并且预安装的摄像头应用处理 MediaStore.ACTION_MOTION_PHOTO_CAPTUREMediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE intent,则:

  • [C-1-4] 必须确保在处理这些 intent 时,预安装的摄像头应用负责先移除图像元数据中的用户位置,再将其发送至接收应用(如果接收应用没有 ACCESS_FINE_LOCATION)。

  • [C-1-5] 必须确保返回的动态照片使用动态照片格式 1.0 规范。

9. 安全模型兼容性

9.1. 权限

Android 16 中新增的要求开始

如果设备包含公开与健康相关的生物识别数据(例如心率或体表温度)的数据传感器,则这些生物识别数据:

  • [C-0-16] 如果 HealthPermissions 中存在相应的权限,则必须由 android.permission-group.HEALTH 中的平台权限进行保护。

  • [C-0-17] 如果没有平台权限与所需数据类型匹配,则必须由自定义系统权限进行保护。(例如,ELECTROCARDIOGRAM。)

Android 16 中更改的要求开始

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

  • [C-1-1] 不得由管理员以静默方式授予以下权限:

    • 位置信息(ACCESS_BACKGROUND_LOCATIONACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION)。
    • 摄像头 (CAMERA)
    • 麦克风 (RECORD_AUDIO)
    • 身体传感器 (BODY_SENSORS)
    • 运行状况 (HealthPermissions)
    • 身体活动 (ACTIVITY_RECOGNITION)

9.5. 多用户支持

Android 16 中新增的要求开始

如果设备实现创建上述附加用户个人资料,包含至少一个摄像头,并且预安装的摄像头应用处理 intent MediaStore.ACTION_MOTION_PHOTO_CAPTUREMediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE,则:

  • [C-5-1] 必须允许主要用户的应用处理源自该附加用户个人资料的这些 intent。

9.7. 安全功能

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

Android 16 中更改的要求开始

  • [C-0-8] 当可执行代码为只读、只读数据不可执行且不可写入,以及可写入数据不可执行时,必须实现严格的内核内存保护机制(例如 CONFIG_DEBUG_RODATACONFIG_STRICT_KERNEL_RWX(例如,同时启用 rodataCONFIG_STRICT_KERNEL_RWX

9.8. 隐私设置

9.8.2. 录制

设备实现:

Android 16 中更改的要求开始

Android 16 中移除的要求开始

9.11. 密钥和凭据

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

Android 16 中更改的要求开始

  • [C-1-6] 必须支持以下某一项:

    • IKeymasterDevice 3.0,
    • IKeymasterDevice 4.0,
    • IKeymasterDevice 4.1,
    • IKeyMintDevice 版本 1,或
    • IKeyMintDevice 版本 2。

  • [C-1-6] 必须支持 IKeymasterDevice 3.0 或更高版本,或 IKeyMintDevice 版本 1 或更高版本。

  • [C-SR-1] 强烈建议支持 IKeyMintDevice 版本 1。

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

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

Android 16 中移除的要求开始

  • [C-10-2] 空闲超时时,必须与所有虚拟设备断开连接

  • [C-10-3] 必须有空闲超时

Android 16 中移除的要求开始

  • [C-10-7] 必须满足以下条件之一:

    • 停用剪贴板
    • 为支持剪贴板的每台设备启用单独的剪贴板

Android 16 中更改的要求开始

  • [C-10-15] 必须在跨设备访问剪贴板数据时显示通知,并且必须使内容在从初始共享时间算起一分钟后无法再访问。

  • [C-10-15] 必须在访问剪贴板数据的设备和剪贴板发起的设备上显示通知。

9.18. 开发者验证 [新增部分]

Android 16 中新增的要求开始

声明 API 级别为 36.1 或更高级别的设备实现:

  • 可以包含对开发者验证工具服务的支持,以证明应用来自已知开发者。

如果设备实现声明 API 级别为 36.1 或更高级别,并通过在 config.xml 中定义 config_developerVerificationServiceProviderPackageName 配置开发者验证工具,则:

  • [9.18/C-1-1] 必须针对每一次应用软件包安装操作(包括新安装以及安装现有应用的更新)调用配置的 android.content.pm.verify.developer.DeveloperVerifierService

声明 API 级别为 36.1 或更高级别的设备实现:

  • 也可以通过在 config.xml 中定义 config_developerVerificationPolicyDelegatePackageName 配置委托,以设置生效的政策。

如果配置了开发者验证工具,则设备实现:

  • [9.18/C-2-1] 必须仅允许开发者验证工具或其配置的委托设置安装政策(如 android.content.pm.PackageInstaller 中所定义)。

如果是在软件包安装会话中调用验证工具,则设备实现:

  • [9.18/C-3-1] 必须在出现下列情况时阻止安装应用软件包:

    • 安装未能通过开发者身份验证。
    • 安装会话的开发者验证政策设置为 DEVELOPER_VERIFICATION_POLICY_NONE 以外的任何值。
    • 符合 9.18/C-3-2 或 9.18/C-3-3 所述的情况除外。
  • [9.18/C-3-2] 在下列情况下,无论政策或验证状态如何,都不得阻止安装应用软件包:

    • 软件包是通过 Android 调试桥 (ADB) 安装的。
    • 软件包是配置的开发者验证工具或其安装程序。
  • [9.18/C-3-3] 若下列所有条件均得到满足,则不得阻止安装应用软件包:

    • 政策设置为 DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_WARNDEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_OPEN
    • 报告指示验证不完整。
    • 安装程序报告 DEVELOPER_VERIFICATION_USER_RESPONSE_INSTALL_ANYWAY,指示用户明确请求继续安装。
  • 如果安装操作由受管设备或受管资料的所有者在相应设备上发起,则无论其政策或验证状态如何,都可以允许安装应用软件包。但强烈建议按照 9.18/C-3-1 中的要求阻止安装。