某些类别的 Android 电视设备(例如平板电视和运营商 STB)需要能够播放直播电视内容的电视应用。Android 开源项目中提供了参考应用的源代码。
本页面总结了如何基于 Live TV 为您的 Android 电视设备构建和自定义系统电视应用。
依赖项
Live TV 应用是 TV 输入框架 (TIF) 的组件,不能独立于其他 TIF 组件使用。该应用的不同分支对 Android API 级别有不同的依赖项
分支 | 目标 API 级别 | 最低 API 级别 |
---|---|---|
main |
24(Android 7.0) | 23 |
android-live-tv |
23(Android 6.0) | 21 |
android-live-tv-l-mr1 |
22(Android 5.1) | 21 |
获取源代码
要开始使用,请从 Git 中选择一个 Live TV 版本。以下说明适用于当前版本的 Live TV。要使用早期版本,请切换到上表中列出的 Git 分支之一。
mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b main
repo sync -j8 -c
构建
要构建 Live TV 代码,请运行
. build/envsetup.sh
tapas LiveTv x86
make LiveTv
推送
使用以下代码将 Live TV 推送到您的测试设备
adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk
如果您希望 Live TV 应用具有系统权限,请在首次安装时使用以下代码将其推送到 /system/priv-app
adb push $OUT/system/priv-app/LiveTv/LiveTv.apk /system/priv-app/LiveTv/
测试
在设备上安装 Live TV 后,除了 TV 应用的兼容性测试套件和CTS Verifier 测试之外,还必须使用以下测试来测试其是否已正确集成。您必须连接设备或模拟器才能运行所有测试类型。
单元测试
adb shell logcat -c m LiveTv TVTestInput TVUnitTests -j20 &&\ adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\ adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \ adb install -r -d $OUT/data/app/TVUnitTests/TVUnitTests.apk && \ adb shell pm clear com.android.providers.tv && \ adb shell pm clear com.android.tv && \ adb shell am instrument \ -e testSetupMode unit \ -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\ adb shell input keyevent KEYCODE_HOME &&\ adb shell am instrument \ -w 'com.android.tv.tests/android.support.test.runner.AndroidJUnitRunner'
功能测试
adb shell logcat -c m LiveTv TVTestInput TVFuncTests -j20 &&\ adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\ adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \ adb install -r -d $OUT/data/app/TVFuncTests/TVFuncTests.apk && \ adb shell pm clear com.android.providers.tv && \ adb shell pm clear com.android.tv && \ adb shell am instrument \ -e testSetupMode func \ -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\ adb shell input keyevent KEYCODE_HOME &&\ adb shell am instrument \ -w 'com.android.tv.tests.ui/android.support.test.runner.AndroidJUnitRunner'
卡顿测试
卡顿测试会查找丢帧和渲染延迟。
adb shell logcat -c m LiveTv TVTestInput TVJankTests -j20 &&\ adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\ adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk &&\ adb install -r -d $OUT/data/app/TVJankTests/TVJankTests.apk &&\ adb shell pm clear com.android.providers.tv &&\ adb shell pm clear com.android.tv &&\ echo "Creating a lot of channels and EPG data, this may take a while" &&\ adb shell am instrument \ -e testSetupMode jank \ -w com.android.tv.testinput/.instrument.TestSetupInstrumentation &&\ adb shell input keyevent KEYCODE_HOME &&\ adb shell am instrument \ -w 'com.android.tv.tests.jank/android.support.test.runner.AndroidJUnitRunner'