Android TV 应用需要满足哪些 Google Play 的认证要求?

解读

面试官问“认证要求”并不是想听你背文档,而是考察三点:

  1. 是否知道 TV 与手机在审核维度上的差异(大屏、遥控器、客厅场景);
  2. 能否把“合规”拆成技术、内容、分发、性能四条线,用国内团队听得懂的语言说出来;
  3. 是否具备“过认证”实战经验:遇到驳回怎么定位、怎么复测、怎么在两周内闭环。

因此回答要“先给全景,再给痛点,最后落到自己踩过的坑”。

知识点

  1. 技术合规

    • targetSdkVersion ≥ 31(2023 新入池硬门槛)
    • Leanback Support 必须声明 android.software.leanback=true,且存在 Leanback-Launcher Activity
    • 非触控导航:D-pad 五向键必须完整走通,禁止依赖触屏的“滑动返回”
    • 焦点链无断点:RecyclerView 必须显式设置 FocusHighlightHelper,禁止出现“焦点跳丢”导致用户无法继续操作
    • 10 ft 字体与 1920×1080 安全区:字号≥16 sp,关键按钮距屏幕边缘≥27 dp,防止电视过扫描裁切
    • 音视频解码:必须支持 H.264 baseline 与 AAC-LC,4K 30 fps 机型需额外支持 H.265 Main10 Level 5.0
    • DRM:若提供 4K 内容,必须走 Android TV 的 Widevine L1 + HDCP 2.2,且密钥请求走 TEE,不能落在 Java 层
    • 后台限制:TV 端默认启用 App Standby Bucket,需在代码里对 JobScheduler/WorkManager 加 CONSTRAINTS_DEVICE_IDLE,否则后台被冻导致推送收不到
  2. 内容合规(国内团队最容易被卡)

    • 必须集成 Google 提供的 Watch Next API,把“下一集”卡片同步到系统频道,否则会以“不符合 TV 内容发现体验”驳回
    • 若含付费,必须接 Google Play Billing 5.0+,且订阅页需带“管理订阅”入口,不能自己搭 H5
    • 广告 SDK 只能使用 Google 认证版本(如 IMA 3.25+),开屏 5 秒必须可跳过,禁止模拟系统 UI 诱导点击
  3. 分发与包体

    • 上传格式:TV 强制 AAB,最小化 32 MB 以下,drawable-xxxhdpi 资源用 webp,否则 Google Play Console 会提示“Large download on TV”
    • 设备过滤:在 AndroidManifest 里显式声明 <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>,否则会被自动排除到手机池
    • 签名:V2 + V3 必须同时开启,密钥有效期 ≥ 25 年,国内渠道包共用同一签名证书,避免“双签”导致 GMS 验签失败
  4. 性能与稳定性

    • 冷启动 ≤ 2 s(Google 实验室使用 Pixel 4 电视棒测试),主线程阻塞不得连续 16 ms 以上
    • 内存:前台 1080P 界面 PSS ≤ 200 MB,后台 30 min 后被 lmkd 回收不能出现“已启动服务崩溃”
    • 耗电:Battery Historian 后台 CPU 占用 1 h 累计 ≤ 1%,国内厂商盒子上若触发温控杀进程会被记为“稳定性缺陷”
  5. 国内团队常见驳回案例

    • 驳回代码 404(No Leanback Launcher):忘记在 Activity 加 CATEGORY_LEANBACK_LAUNCHER
    • 驳回代码 422(Focus not reachable):使用 Compose for TV 时把 Button 放在 LazyVerticalGrid 里,未给 modifier.focusable(true)
    • 驳回代码 803(Widevine provisioning fail):测试机是小米电视棒国际版,默认 Widevine L3,开发环境没切到 L1 证书,导致 Google 实验室 4K 测试黑屏

答案

“Google Play 对 Android TV 的认证可以拆成‘技术、内容、分发、性能’四条线,共 20 多项硬指标。核心差异在交互与 DRM:

技术侧,首先 targetSdk 必须 31 以上,Manifest 要声明 leanback 支持并给出 Leanback Launcher;所有交互必须能用 D-pad 完成,焦点链不能断;字体≥16 sp、关键按钮留 27 dp 安全边距;4K 内容必须走 Widevine L1+HDCP2.2,密钥请求走 TEE。

内容侧,必须接入 Watch Next 频道与 Google Play Billing 5.0,广告只能用认证 IMA SDK,开屏 5 秒可跳过。

分发侧,强制 AAB,32 MB 以内,把 touchscreen 标为非必需,签名走 V2+V3。

性能侧,冷启动 2 s 内,前台内存 ≤ 200 MB,后台 1 h CPU 占用 ≤ 1%。

我在上个项目被驳回过一次,原因是焦点跳丢:RecyclerView 嵌套 CardView 时没开 focusHighlight,Google 实验室用遥控器无法选中第 6 个海报。修复方式是自己写 FocusGridLayoutManager,在 onRequestChildFocus 里加 smoothScrollToView,复测 3 台电视棒通过后第二天就上架了。”

拓展思考

  1. 国内双渠道:同一套代码出 Google Play 国际版与华为/小米/当贝国内商店,如何用最少的 flavor 做差异化?——建议把 Watch Next、GMS Billing 做成 dynamic-feature module,国内 flavor 直接不打包,减小体积。
  2. 折叠屏与 TV 多屏协同:如果手机端已开始播放,TV 端通过 Cross-Device SDK 续播,DRM 会话如何迁移?——需要把 Widevine license 绑定到用户级而非设备级,利用 Offline License Helper 实现“单用户多屏”不重复计费。
  3. 未来 12 个月政策风向:Google 宣布 2024 起 TV 应用必须支持 Android 13 的 Privacy Sandbox for TV,限制广告 ID,需提前用 Topics API 做受众分群,否则广告填充率会掉 30%。