Android Google Widevine

目录

[第一章:什么是 Widevine?](#第一章:什么是 Widevine?)

[1.1 概念介绍](#1.1 概念介绍)

[1.2 安全级别说明](#1.2 安全级别说明)

[1.3 相关政策与协议](#1.3 相关政策与协议)

[1.4 访问权限申请](#1.4 访问权限申请)

[1.5 审查资源与分支对照](#1.5 审查资源与分支对照)

[第二章:Widevine 集成指南](#第二章:Widevine 集成指南)

[2.1 阶段一:注册问卷调查](#2.1 阶段一:注册问卷调查)

[2.1.1 在 APA 门户创建设备](#2.1.1 在 APA 门户创建设备)

[2.1.2 完成注册问卷](#2.1.2 完成注册问卷)

[2.2 阶段二:配置密钥](#2.2 阶段二:配置密钥)

[2.2.1 方式一:Provisioning 4.0 (RKP)](#2.2.1 方式一:Provisioning 4.0 (RKP))

[2.2.2 方式二:Keybox 配置](#2.2.2 方式二:Keybox 配置)

[2.3 阶段三:集成 Widevine 代码库](#2.3 阶段三:集成 Widevine 代码库)

[第三章:Widevine 测试指南](#第三章:Widevine 测试指南)

[3.1 GTS 测试要求](#3.1 GTS 测试要求)

[3.2 其他验证要求](#3.2 其他验证要求)

[3.2.1 OEMCrypto 版本要求](#3.2.1 OEMCrypto 版本要求)

[3.2.2 可信引导加载程序要求](#3.2.2 可信引导加载程序要求)

[3.2.3 设备状态流转](#3.2.3 设备状态流转)

第四章:总结与实施流程

[4.1 关键要点总结](#4.1 关键要点总结)

[4.2 实施流程图](#4.2 实施流程图)

[4.3 ODM 工程师实施检查清单](#4.3 ODM 工程师实施检查清单)


第一章:什么是 Widevine?

1.1 概念介绍

Widevine 是 Google 提供的数字版权管理(DRM)解决方案,用于保护流媒体内容免受未经授权的复制和分发。它使设备能够进行身份验证并获取许可证以解密受 DRM 保护的内容。

核心功能:

  • 设备身份认证:通过 Keybox 或 RKP 证明设备合法性
  • 许可证获取:从内容提供商服务器获取解密密钥
  • 内容解密:在受信任的执行环境中解密受保护内容
  • 输出保护:通过 HDCP 保护数字输出内容

1.2 安全级别说明

Widevine 支持不同的安全级别,以满足不同设备和内容的需求:

|--------------|-------------------------------|----------------------|
| 安全级别 | 特点 | 适用场景 |
| L1 | 硬件级安全,解密在 TEE 中进行,支持高清/UHD 内容 | 需要注册,适合播放高清/4K 内容的设备 |
| L3 | 软件级安全,使用内置 Android 实现,无需硬件支持 | 无需注册,适合仅播放标清内容的设备 |

****重要说明:****对于预装 Google Mobile Services (GMS) 的设备,Widevine 是设备审批的必要条件。L1 设备需要满足 L1 Widevine 设备健壮性规则。

1.3 相关政策与协议

Widevine 主许可协议 (MLA):

所有想要实现 Widevine 的 Android 合作伙伴都必须签署 Widevine Master License Agreement (MLA)。该协议详细规定了设备必须满足的健壮性要求,包括:

  • 硬件安全要求:TEE(可信执行环境)的支持
  • 密钥存储要求:密钥必须存储在安全区域
  • 输出保护要求:HDCP 支持要求
  • 防篡改要求:防止逆向工程和密钥提取

1.4 访问权限申请

想要在其 Android 设备上实现 Widevine keyboxes 的 Android 合作伙伴必须首先申请访问 Widevine 资源。具体步骤如下:

1.5 审查资源与分支对照

获得 Widevine 资源访问权限后,需要根据您的 Android 版本选择正确的分支:

|--------------------|----------------------------------|
| Android 版本 | Widevine 分支名称 |
| Android 16 | 2502-widevine-partner-fs-release |
| Android 15 | v-widevine-partner-fs-release |
| Android 14 | u-widevine-partner-fs-release |
| Android 13 | t-widevine-partner-fs-release |
| Android 12 | s-widevine-partner-fs-release |
| Android 11 | r-widevine-partner-fs-release |
| Android 10 | qt-widevine-release |
| Android 9 | pi-widevine-release |
| Android 8.1 | oc-mr1-widevine-release |
| Android 8.0 | oc-widevine-release |
| Android 7.0 | n-dev-widevine |

第二章:Widevine 集成指南

Widevine 集成分为三个主要阶段:注册问卷调查配置密钥集成代码库。下面详细介绍每个阶段的操作步骤。

2.1 阶段一:注册问卷调查

****前提条件:****只有在需要 Widevine 安全级别 1 (L1) 时才需要进行 Widevine 注册。L3 设备使用内置 Android L3 实现,无需注册。

2.1.1 在 APA 门户创建设备

  • 在 Android Partner Approval (APA) 门户上传 CTS 或 GTS 测试以创建设备
  • 填写设备详情页面,包括 CPU 制造商和 CPU 型号
  • 导航到 Devices and Products → 选择设备 → Edit → DRM 设置 → Register

2.1.2 完成注册问卷

注册问卷包含以下关键问题,请根据设备实际情况准确填写:

|------------|---------------------------------------------------------------------------------------------------|
| 问题 | 详细说明 |
| Q1 | 选择 Android 平台:Mobile / TV / Auto / Wear |
| Q2 | Board API Level (ro.board.first_api_level):从下拉菜单选择 |
| Q3 | Android 启动版本 (ro.product.first_api_level):从下拉菜单选择 |
| Q4 | Widevine 配置方式选择(关键决策): • Provisioning 4.0 (RKP):Android 14+ 必需,支持 DICE • Keybox:传统方式,适用于非 DICE 设备 |
| Q5 | OEMCrypto 版本:从下拉菜单选择,需与 Android 版本匹配 |
| Q6 | 数字输出支持:Has Digital Output (HDMI/DVI/USB-C) 或 No Digital Outputs |
| Q6.1 | HDCP 版本支持:HDCP 1.4+ (1080p) 或 HDCP 2.2+ (4K) |
| Q7 | 模拟输出支持:Has Analog Outputs 或 No Analog Outputs |
| Q7.1 | CGMS-A 支持:是否支持模拟复制生成管理系统 |

****⚠️ 重要警告:****错误回答问题 4(配置方式)会延迟实施和测试。如需创建基于 keybox 的设备但选项不可用,请联系 Google 对接人。

PS:这段问卷调查如何填写,详细可以参考google原文

When updating your device registration as detailed above, be prepared to answer the following questions.

  • 1.Select Android Platform: [Mobile / TV / Auto / Wear]

  • 2.Select Board API Level (ro.board.first_api_level): [choose from dropdown]

  • 3.Select Android Launch version (ro.product.first_api_level): [choose from dropdown]

  • 4.Select Widevine Provisioning Method: [choose one]

    Note: Answering this question incorrectly delays implementation and testing. To resolve this, you must submit an issue to your Android TAM and complete this questionnaire again. If you need to create a keybox-based device and the option isn't available, contact your Google point of contact.

    If you answered "Provisioning 4.0" to 4, answer question 4.1:

    • 4.1.Does this device support DICE? [Yes / No]
  • 5.Select OEMCrypto version: [choose from dropdown]

    Refer to Widevine's OEMCrypto version requirements.

  • 6.Digital Output Support [choose one]

    • Answer "Has Digital Outputs" if the device has a digital output port capable of connection to an external display such as HDMI, DVI, or USB Type-C. This doesn't include internal displays.
    • Answer "No Digital Outputs" if the device doesn't have any digital outputs.

    If you answered "Has Digital Outputs" to 6, answer question 6.1:

    • 6.1.What's the maximum HDCP version supported? [choose from dropdown]

      High-bandwidth Digital Content Protection (HDCP) is a standard used to protect content shown over digital video outputs. Version 1.4 is the minimum required for the L1 security level. Select "unspecified" if HDCP isn't supported. Most studios use these guidelines:

      • HDCP 1.4 or higher for FullHD (1080p)
      • HDCP 2.2 or higher for UHD (4K)
  • 7.Analog Output support: [choose one]

    • Answer "Has Analog Outputs" if the device has an analog output port capable of connecting to an external display such as composite or component video. This doesn't include internal displays.
    • Answer "No Analog Outputs" if the device doesn't have any analog outputs.

    If you answered "Has Analog Outputs" to 7, answer question 7.1:

    7.1.CGMS-A Support: [choose one]

    • Answer "CGMS-A Supported" if the device supports Copy Generation Management System -- Analog (CGMS-A). CGMS-A inserts flags into analog video signals that prevent or restrict recording with a compliant recording device.
    • Answer "No CGMS-A Support" if the device doesn't support CGMS-A

2 . 1 .3 设备状态流转

提交注册问卷后,设备状态流转如下:

  • ****In Testing:****提交问卷后,设备在 Widevine 中创建为此状态
  • ****Released:****构建获得批准且设备在 APA 中发布后,状态变更为 Released

****关键说明:****Released 状态对于从内容服务提供商获取认证和播放批准至关重要。

2.2 阶段二:配置密钥

Widevine 密钥配置有两种方式,根据设备架构和 Android 版本选择:

PS:详细可以参考https://blog.csdn.net/qq_27672101/article/details/156652343

2.2.1 方式一:Provisioning 4.0 (RKP)

****适用场景:****Android 14 及更高版本,支持 DICE 架构的设备

配置支持矩阵:

|------------------|--------------------|--------------------|--------------------|
| 功能特性 | Android 14 | Android 15 | Android 16 |
| Provisioning 4.0 | 支持 | 强烈推荐 | DICE+L1 设备必需 |
| Provisioning 2.0 | 支持 | 支持 | 仅非 DICE 设备 |

****CSR 字段要求:****提取的 CSR 中以下字段必须与 APA 注册匹配:

  • Build.DEVICE
  • Build.MANUFACTURER
  • Build.MODEL

2.2.2 方式二:Keybox 配置

****适用场景:****不支持 DICE 架构的设备,或升级到 Android 16 / 以 Android 15 或更低版本启动的设备

配置流程:

  • 打开 Partner Approvals 门户(https://partner.android.com
  • 为一组设备请求 keyboxes
  • 下载 Widevine 密钥
  • 在该组设备上安装 XML keybox

****⚠️ 注意:****Keybox 请求必须来自 https://partner.android.com,来自 https://integration.widevine.com 的请求不受支持。

2.3 阶段三:集成 Widevine 代码库

将 Widevine 客户端库二进制文件集成到您的 Android 实现中:

PS:这里介绍的是如何从google获取,但并不是任何都有权限, 因此通常是接口人下载好软件包,我们只需要集成到源码中编译进去即可。

  • 导航到您的 Android 源码目录:

cd PLATFORM-ROOT/.repo/local_manifest

  • 创建 widevine.xml 文件:
XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch="https://partner-android-review.googlesource.com/" name="ohd"/>
  <project name="platform/vendor/widevine" path="vendor/widevine" remote="ohd" revision="BRANCH"/>
</manifest>
  • 将 BRANCH 替换为您选择的 Android 发布分支名称(见 1.5 节对照表)
  • 保存文件后执行同步:

$ repo sync

第三章:Widevine 测试指南

3.1 GTS 测试要求

在设备上运行 GMS Test Suite (GTS) 进行验证。您必须提供 GTS 测试结果以供设备审批(每个设备构建都需要)。

测试模块位置:

|----------------|-----------------------|
| GTS 版本 | Widevine 测试模块 |
| GTS 10 | GtsMediaTestCases |
| GTS 11+ | WvtsDeviceTestCases |

测试命令示例:

GTS 11+

$ adb shell am instrument -w -r -e class com.google.android.gts.widevine \

com.google.android.gts.wvts/.WvtsDeviceTestCases

3.2 其他验证要求

3.2.1 OEMCrypto 版本要求

搭载 GMS 的 Android 设备必须支持与设备上使用的 Android 平台版本关联的 OEMCrypto API 版本。详细信息请参阅 Supported Platforms and OEMCrypto Version Compatibility 文档。

3.2.2 可信引导加载程序要求

使用不包含安全引导加载程序的芯片组的 Android 设备需要使用可信引导加载程序:

|------------------|--------------------------|
| 引导加载程序类型 | 引导认证密钥验证方式 |
| 安全引导加载程序 | 使用工厂熔丝的引导认证密钥(硬件级安全) |
| 可信引导加载程序 | 使用存储在安全位置的引导认证密钥(OEM 特定) |

3.2. 3 TEE驱动能力的使能

常规方案其实就是TEE底层驱动的使能配置。

TEE的使能在不同平台不同芯片上面都不一样,在MTK平台上面比较完善,通常MTK会提供一份SOP指南,但是高通平台就需要自己去调试。

直接参考MTK的SOP:https://online.mediatek.com/apps/faq/detail?faqid=FAQ24581&list=SW

DESCRIPTION

拿到版本后如何设置和检查Trustonic TEE功能

提供两种方式,一种是手动方式,一种是脚本方式;

建议:

a. 项目初期打开TEE功能时,建议使用脚本方式,然后再手动检查核对一次,并且按需做调整(比如MTK_TEE_DRAM_SIZE);

b. 需要快速检查配置是否正常时,建议使用脚本方式;

SOLUTION

方法一:使用脚本 <TEEOptionScripts>

脚本路径:vendor/mediatek/proprietary/trustzone/custom/build/tools/TEEOptionScripts/

使用方法:打开TEE:[...] ./setTEE.py --project=(PROJECT) [foc_xxx.json]

检查TEE:[...] ./checkTEE.py --project=(PROJECT) [foc_xxx.json]

具体可查看和参考README说明;

需要注意:MTK_TEE_DRAM_SIZE 依赖和涉及TEE功能和TA/TDRV模块,这部分不同OEM会有客制化,请按需手动调整配置;

目前已支持 Android S、T、U,V,B,C,若释放的代码基线没有此脚本,可以联系MTK TEE 窗口获取;

方法二:人工逐项设置和检查

另外,配置部分,若OEM有做客制化,请注意自行检查核对客制化的部分;

可依据不同版本及平台信息进行配置及检查:

2026 ) Android C + kernel-6.18 新平台与 C+C migration 旧平台

参考:[FAQ40413] 【TEE】Trustonic tee 打开方式-- Android C + kernel-6.18 新平台与 C+C 旧平台

【适用平台及版本信息】

vendor 版本: alps-mp-c0.mp1
kernel version: kernel-6.18

TF-A version : 新平台:tf-a-2.14 旧平台:tf-a-2.6
trustonic tee version: 700
platform: 新平台:MT6995 旧平台:MT6835

2025 ) Android B + kernel-6.12 新平台与 B+B migration 旧平台

参考:[FAQ36397] 【TEE】Trustonic tee 打开方式-- Android B + kernel-6.12 新平台与 B+B 旧平台

【适用平台及版本信息】

vendor 版本: alps-mp-b0.mp1
kernel version: kernel-6.12

TF-A version : tf-a-2.12 ( 旧平台是 tf-a-2.4 )
trustonic tee version: 700
platform: 新平台:MT6993 旧平台:MT6789,MT6855,MT6895

2024) Android V+kernel-6.6上new launch的新平台

参考:[FAQ35952] 【TEE】Trustonic tee打开方式--Android V+kernel-6.6上new launch的新平台

【适用平台及版本信息】

vendor 版本: alps-mp-v0.mp1
kernel version: kernel-6.6

TF-A version : tf-a-2.10
trustonic tee version: 610
platform: MT6991, MT6899

2023) Anriod V+kernel-6.6上旧平台 Vender freeze 从R/S升级到V的new launch和OTA 项目的tee配置

参考:[FAQ35953] 【TEE】Trustonic tee打开方式--Andriod V+kernel-6.6上旧平台 Vender freeze 从R/S升级到V的new launch和ota项目的配置

【适用平台及版本信息】

vendor版本: alps-mp-v0.mp1
kernel version: kernel-6.6

atf version: atf-v1.6或者atf-v1.4(mt6765)
trustonic tee version: 600

platform: MT6768, MT6877, MT6765, MT6893, MT6833, MT6853, MT6781, MT6761

【Note】Android R or Android S上launch的部分旧平台在Android V上需要重新rejoint GRF,这些平台在Android V kernel6.6上支持kinibi600+keymint3.0

2022) Android U+kernel-6.1上new launch的新平台

参考:[FAQ35955] 【TEE】Trustonic tee打开方式--Android U+kernel-6.1上new launch的新平台

【适用平台及版本信息】

vendor 版本: alps-mp-u0.mp1
kernel version: kernel-6.1

TF-A version : tf-a-2.8
trustonic tee version: 600
platform: MT6989,MT6897,MT6878

2021) Android T/S/R/Q版本开启trustonic tee的config方式

参考:[FAQ35957] 【TEE】Trustonic tee打开方式--Android T/S/R/Q上new launch的新平台

【适用平台及版本信息】

Android T+kernel-5.15上new launch的新平台
kernel version: kernel-5.15/kernel-5.10
trustonic tee version: 510
TF-A version : tf-a-2.6
platform: MT6985, MT6886, MT6835

Android S+kernel-5.10上new launch的新平台
kernel version: kernel-5.10
trustonic tee version: 510
TF-A version : tf-a-2.4
platform: MT6983, MT6895, MT6879, MT6789, MT6855

Android S上旧平台从kernel4.1x升级到Kernel5.10
kernel version: kernel-5.10
atf version: atf-v1.6/atf-v1.4
trustonic tee version: 500
platform: MT6768, MT6765, MT6761, MT6833, MT6893

Android S/R/Q+kernel-4.14/4.19旧平台
kernel version: kernel-4.14/4.19
atf version: atf-v1.6/atf-v1.4
trustonic tee version: 500
platform: MT6768, MT6877, MT6765, MT6893, MT6833, MT6853, MT6781, MT6761

第四章:总结与实施流程

4.1 关键要点总结

  • ****访问权限:****必须先签署 MLA 协议并在 Android Partner Gerrit 注册企业邮箱
  • ****版本对应:****根据 Android 版本选择正确的 Widevine 分支名称
  • ****安全级别:****L1 需要注册并满足硬件要求,L3 使用内置实现无需注册
  • ****配置方式:****Android 14+ 推荐 Provisioning 4.0 (RKP),非 DICE 设备使用 Keybox
  • ****CSR 字段:****Build.DEVICE、MANUFACTURER、MODEL 必须与 APA 注册一致
  • ****测试验证:****必须通过 GTS 测试(GTS 10: GtsMediaTestCases, GTS 11+: WvtsDeviceTestCases)
  • ****状态管理:****设备状态从 In Testing 到 Released,Released 状态是获取内容提供商认证的关键

4.2 实施流程图

以下是 Widevine 集成的完整实施流程:

4.3 ODM 工程师实施检查清单

  • 确认设备安全级别需求(L1 或 L3)
  • 签署 MLA 协议
  • 在 Android Partner Gerrit 注册企业邮箱
  • 联系 Google 对接人获取 Widevine 资源访问权限
  • 下载对应 Android 版本的 Widevine 分支代码
  • 在 APA 门户创建设备并填写注册问卷
  • 配置密钥(RKP 或 Keybox 方式)
  • 集成 Widevine 客户端库代码
  • 运行 GTS 测试验证
  • 等待设备状态变为 Released
相关推荐
HealthScience4 小时前
【Bib 2026】基因最新综述(有什么任务、benchmark、代表性模型)
android·开发语言·kotlin
夏沫琅琊6 小时前
Android拨打电话技术文档
android·kotlin
a2591748032-随心所记6 小时前
android studio gradle快速编译配置
android·android studio
一块小土坷垃6 小时前
# 《电影猎手》观影伴侣:一款支持iOS/安卓/电视盒子的全平台影视工具“电影猎手”(附自用评价)
android·ios·电视盒子
敲代码的鱼哇8 小时前
发送短信/拨打电话/获取联系人能力 UTS 插件(cz-sms)
android·前端·ios·uni-app·安卓·harmonyos·鸿蒙
用户5052372099159 小时前
Android 13/14 通知权限与前台服务适配指南
android
用户5052372099159 小时前
Android 12 适配指南:SplashScreen API 与 PendingIntent 变更
android
用户5052372099159 小时前
一张表看懂 Android 8-15 所有适配要点
android
_祝你今天愉快9 小时前
Android 12 (AOSP) 添加自定义系统服务
android