iptv-app/android-tv
李岩岩 2cab50db31 feat(build): 配置多平台打包输出
- 添加 .env.web/.desktop/.android/.tv 环境变量文件
- 修改 vite.config.js 支持多平台输出到 dist/{platform}/
- 添加 npm run build:web/desktop/android/tv 命令
- 更新 desktop/android/android-tv/web 各端的资源引用路径
- 更新 build-mac.sh 使用 build:desktop 命令
2026-02-05 14:19:28 +08:00
..

Android TV WebView 壳

为 Android TV 设备(包括智能电视、电视盒子等)提供的 WebView 套壳应用。

特性

  • Leanback 支持 - 专为 TV 优化的主题和启动器
  • D-Pad 导航 - 遥控器方向键支持,自动注入 JS 导航
  • 全屏沉浸 - 无状态栏/导航栏,纯全屏体验
  • 横屏锁定 - 强制横屏显示
  • 按键处理 - 支持返回、菜单、信息键等遥控器按键

目录结构

android-tv/
├── app/src/main/
│   ├── java/com/iptv/tv/
│   │   └── MainActivity.java    # TV 主活动(含 D-Pad 支持)
│   ├── res/
│   │   ├── layout/activity_main.xml
│   │   ├── values/
│   │   │   ├── strings.xml
│   │   │   ├── styles.xml      # Leanback 主题
│   │   │   └── colors.xml
│   │   └── drawable/
│   │       └── ic_banner.xml   # TV 启动器横幅
│   ├── assets/
│   │   └── www/                # 打包的 Web 资源
│   └── AndroidManifest.xml     # TV 特定配置
├── build.sh                    # 一键构建脚本
└── ...

构建步骤

# 1. 构建 Web UI
cd ../ui
npm install
npm run build

# 2. 构建 Android TV APK
cd ../android-tv
./build.sh

APK 输出: app/build/outputs/apk/debug/app-debug.apk

TV 特定配置

AndroidManifest.xml

<!-- TV 必需特性 -->
<uses-feature android:name="android.software.leanback" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

<!-- TV 启动器 -->
<intent-filter>
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>

D-Pad 导航支持

应用自动注入 JavaScript 代码,使 Web 应用支持遥控器方向键导航:

  • 方向键 - 在可聚焦元素间移动
  • 确认键 - 点击当前聚焦元素
  • 返回键 - 页面后退/退出应用
  • 菜单键 - 刷新页面
  • 信息键 - 显示版本信息

遥控器按键映射

按键 功能
上/下/左/右 导航焦点
确认/OK 点击
返回 页面后退
菜单 刷新页面
信息/INFO 显示版本

开发与调试

  1. ADB 连接 TV

    adb connect <TV_IP>:5555
    adb install app-debug.apk
    
  2. 查看日志

    adb logcat -s IPTV:D
    
  3. 远程调试

    adb shell am start -a android.intent.action.VIEW -d "http://<dev_server>:5173"