某些類別的Android TV設備(例如平板電視和操作員STB)需要播放實時電視內容的TV應用程序。在Android平台旁邊提供了參考電視應用程序( Live TV ),可以對其進行自定義,擴展或替換。源代碼可在Android開放源代碼項目中找到。
本文總結瞭如何為您的Android電視設備基於Live TV構建和自定義系統TV App。 (您可以擴展電視應用程序以實現設備製造商或特定國家/地區的功能,但這不在參考電視應用程序的範圍內。)
依存關係
電視應用程序是電視輸入框架(TIF)的一個組件,不能獨立於其他組件使用。這意味著只有具有TIF的設備才能運行直播電視應用程序。
直播電視應用程序依賴於Android API。不同的分支對API級別的依賴關係不同:
表1.直播電視分支。
科 | 目標API級別 | 最低API等級 |
---|---|---|
主 | 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的當前版本,但是您可以通過將分支從主分支更改為上表中列出的另一個分支來輕鬆選擇較早的版本。
mkdir live-tv && cd live-tv
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8 -c
建立
要構建直播電視代碼,請運行:
. build/envsetup.sh
tapas LiveTv x86
make LiveTv
推
要將直播電視推送到測試設備:
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/
測試
將直播電視放到設備上後,您應該測試它是否已正確集成。除了運行TV應用程序的兼容性測試套件和CTS驗證程序測試之外,您還可以在下面使用以下測試:
單元測試
直播電視應用有單元測試和功能測試。您必須已連接設備(或仿真器)才能運行測試。
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.google.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.google.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'
垃圾測試
Jank測試會查找丟幀和渲染延遲。
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.google.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'