2025-01-02 21:19:48 +08:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< title > Dich' blog< / title >
< meta http-equiv = "content-type" content = "text/html; charset=utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1" >
< meta name = "robots" content = "noodp" / >
< link rel = "stylesheet" href = "https://blog.dich.bid/style.css" >
< link rel = "stylesheet" href = "https://blog.dich.bid/color/blue.css" >
< link rel = "stylesheet" href = "https://blog.dich.bid/color/background_dark.css" >
< link rel = "stylesheet" href = "https://blog.dich.bid/font-hack-subset.css" >
< meta name = "description" content = "" >
< meta property = "og:description" content = "" >
< meta property = "og:title" content = "Dich'blog" >
< meta property = "og:type" content = "article" >
< meta property = "og:url" content = "https://blog.dich.bid/awesome-android-tv/" >
< meta name = "twitter:card" content = "summary_large_image" >
< meta name = "twitter:description" content = "" >
< meta name = "twitter:title" content = "Dich'blog" >
< meta property = "twitter:domain" content = "blog.dich.bid" >
< meta property = "twitter:url" content = "https://blog.dich.bid/awesome-android-tv/" >
< link rel = "alternate" type = "application/atom+xml" title = "Dich'blog Atom Feed" href = "https://blog.dich.bid/atom.xml" / >
2025-01-24 15:14:06 +08:00
< link rel = "icon" type = "image/png" href = /dich.webp / >
2025-01-02 21:19:48 +08:00
< / head >
< body class = "" >
< div class = "container" >
< header class = "header" >
< div class = "header__inner" >
< div class = "header__logo" >
< a href = "https://blog.dich.bid" style = "text-decoration: none;" >
< div class = "logo" >
Dich' blog
< / div >
< / a >
< / div >
< / div >
< nav class = "menu" >
< ul class = "menu__inner" >
< li class = "active" > < a href = "https://blog.dich.bid" > blog< / a > < / li >
< li > < a href = "https://blog.dich.bid/tags" > tags< / a > < / li >
< li > < a href = "https://blog.dich.bid/archive" > archive< / a > < / li >
< li > < a href = "https://blog.dich.bid/about" > about me< / a > < / li >
< li > < a href = "https://blog.dich.bid/links" > links< / a > < / li >
< li > < a href = "https://blog.dich.bid/search" > search< / a > < / li >
2025-01-24 15:14:06 +08:00
< li > < a href = "https://blog.dich.bid/weekly" > weekly< / a > < / li >
2025-01-02 21:19:48 +08:00
< li > < a href = "https://github.com/Dichgrem" target = "_blank" rel = "noopener noreferrer" > github< / a > < / li >
< / ul >
< / nav >
< / header >
< div class = "content" >
< div class = "post" >
< h1 class = "post-title" > < a href = "https://blog.dich.bid/awesome-android-tv/" > 综合工程:Android TV 折腾小记< / a > < / h1 >
< div class = "post-meta-inline" >
< span class = "post-date" >
2023-08-14
< / span >
< / div >
< span class = "post-tags-inline" >
:: tags:
< a class = "post-tag" href = "https://blog.dich.bid/tags/zong-he-gong-cheng/" > #综合工程< / a > < / span >
< div class = "post-content" >
< p > 前言 由于 AppleTV 的高昂的售价和普通电视盒子广告的泛滥,一台开源、多功能的原生安卓电视盒子逐渐成为智能家居的必备神器。出于对 IPTV、YouTube 和家庭影院等需求,以及对一面赏心悦目电视墙的期待,这里分享 Android TV ( 以下简称ATV) 安装的一些要点。< / p >
2025-01-22 17:10:24 +08:00
< span id = "continue-reading" > < / span > < h2 id = "ling-yao-shi-xian-de-mu-biao" > 零.要实现的目标< / h2 >
< ul >
< li > 实现自己的设备(X86/Arm)上安装TV系统; < / li >
< li > 实现< strong > 无开机广告和内置广告< / strong > ; < / li >
< li > 实现< strong > 海报墙效果< / strong > (矩形磁帖),或自定义安卓桌面启动器;< / li >
< li > 实现< strong > 影视番剧观看< / strong > , 基于TVbox/Kodi/Kazumi; < / li >
< li > 实现< strong > 国内流媒体观看< / strong > , 包括Bilibili, 爱优腾等等; < / li >
< li > 实现< strong > 国外流媒体观看< / strong > , 包括Netflix, YouTube, Disney+, Spotify等等; < / li >
< li > 实现< strong > 家庭影院< / strong > , Emby类软件自动刮削; < / li >
< li > 实现< strong > IPTV< / strong > 观看,采用自抓取源或者公共源;< / li >
2025-01-22 18:23:16 +08:00
< li > 实现< strong > 复古游戏< / strong > 游玩, 包括GBA/FC等等, 基于RetroArch/PPSSPP/Emuelec,可以连接手柄;< / li >
2025-01-22 17:10:24 +08:00
< li > 实现< strong > 游戏主机串流< / strong > , 包括PS/Xbox/Switch等等; < / li >
< / ul >
< h2 id = "yi-xuan-ze-he-gua-de-ping-tai" > 一.选择合适的平台< / h2 >
< p > X86还是Arm? 两者之间各有优点, 截止到今天各种Arm电视盒子已经非常成熟, 价格便宜, 也可以使用运营商的电视盒子进行刷机, 性能并不会太弱; 而X86平台往往价格偏贵, 且解码性能和功能适配没有和电视生态联系紧密, 因此建议首选Arm平台。< / p >
< h2 id = "er-xuan-ze-he-gua-de-xi-tong" > 二.选择合适的系统< / h2 >
< p > 无论是运营商自带的电视盒子还是各种所谓的“无广告”电视盒子,往往都基于以下两种系统,且不要迷信所谓的“无广告”电视盒子,它们往往配置低下,性价比不高且还是有内置付费项目,甚至有一些根本没有做到去广告。< / p >
< table > < thead > < tr > < th > 特性< / th > < th > < strong > Android-x86< / strong > < / th > < th > < strong > Android TV< / strong > < / th > < / tr > < / thead > < tbody >
< tr > < td > < strong > 目标用户< / strong > < / td > < td > 面向 PC 用户,将 Android 运行在 x86/x86_64 设备上。< / td > < td > 面向电视和机顶盒用户,优化用于遥控器或语音操作。< / td > < / tr >
< tr > < td > < strong > 适配设备< / strong > < / td > < td > 传统 PC、笔记本、平板电脑等 x86 架构设备。< / td > < td > 智能电视、电视盒子等 ARM 或特定芯片架构设备。< / td > < / tr >
< tr > < td > < strong > 界面设计< / strong > < / td > < td > 和标准 Android 类似,为触摸屏和鼠标键盘优化。< / td > < td > 专为大屏设计,使用 Leanback UI, 适配遥控器操作。< / td > < / tr >
< tr > < td > < strong > Google 服务< / strong > < / td > < td > 默认不包含 Google 服务,需要用户手动安装。< / td > < td > 官方版本内置 Google 服务(例如 Play Store、Assistant) 。< / td > < / tr >
< tr > < td > < strong > 开机启动器< / strong > < / td > < td > 使用标准 Android 桌面启动器( Launcher3) 。< / td > < td > 使用电视优化的启动器( Leanback Launcher) 。< / td > < / tr >
< tr > < td > < strong > 架构支持< / strong > < / td > < td > 专注于 < strong > x86/x86_64< / strong > ,但支持 ARM 仿真(通过 Houdini) 。< / td > < td > 主要支持 < strong > ARM/ARM64< / strong > 架构,有限支持 x86。< / td > < / tr >
< tr > < td > < strong > 硬件支持< / strong > < / td > < td > 需要额外优化,部分硬件(如 GPU 驱动)可能无法正常工作。< / td > < td > 深度集成硬件,默认支持电视硬件(如 HDMI CEC、音频输出) 。< / td > < / tr >
< tr > < td > < strong > 应用市场< / strong > < / td > < td > 默认不内置 Google Play, 需要手动安装 Aurora Store 等替代方案。< / td > < td > 默认集成 Google Play 商店,提供大屏优化的应用程序。< / td > < / tr >
< tr > < td > < strong > 遥控器支持< / strong > < / td > < td > 不适配遥控器,主要使用鼠标键盘操作。< / td > < td > 专为遥控器优化,支持按键导航和语音输入。< / td > < / tr >
< tr > < td > < strong > 开源贡献< / strong > < / td > < td > 由社区维护,支持各种自定义和实验功能。< / td > < td > 由 Google 官方主导, OEM 厂商提供硬件优化支持。< / td > < / tr >
< / tbody > < / table >
< hr / >
< blockquote >
< p > Android-x86 的安装类似windows, 需要命令行界面配置; Android TV安装类似 Android手机, 通过刷分区或TWRP卡刷安装。< / p >
< / blockquote >
< blockquote >
< p > Tosathony 制作的 Android TV x86 是一个由社区成员制作的定制化 Android TV 版本,针对 Android TV 的大屏界面 和 遥控器操作 进行特别优化,但某些硬件(如 Wi-Fi、GPU、音频设备等) 的驱动可能不兼容或需要额外的配置。< / p >
< / blockquote >
< p > < strong > 刷 Tosathony Android TV X86 准备工作< / strong > : < / p >
2025-01-02 21:19:48 +08:00
< ul >
< li >
2025-01-22 17:10:24 +08:00
< p > 1.< a href = "https://pan.baidu.com/s/17eDDrf4WzWVmrc9hLw-c_w?pwd=a728" > Tosathony 制作的 Android TV x86 9.0< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > 2.< a href = "https://www.423down.com/10080.html" > Rufus 写盘工具< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > 3.< a href = "https://android-tv-remote-control.en.softonic.com/android" > Android tv Remote 手机遥控器软件:< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > 4.< a href = "https://androidmtk.com/tiny-adb-and-fastboot-tool#installer" > Tiny ADB 软件< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
2025-01-22 17:10:24 +08:00
< / ul >
< p > < strong > 一些可安装的软件< / strong > : < / p >
< ul >
2025-01-02 21:19:48 +08:00
< li >
2025-01-22 17:10:24 +08:00
< p > < a href = "http://www.kodiplayer.cn/" > kodi< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > < a href = "https://www.dangbei.com/apps/" > 当贝市场< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > < a href = "https://www.fenxm.com/104.html" > 哔哩哔哩TV版< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< li >
2025-01-22 17:10:24 +08:00
< p > < a href = "https://www.fenxm.com/592.html" > ATV Launcher< / a > < / p >
2025-01-02 21:19:48 +08:00
< / li >
< / ul >
< h2 id = "yi-xie-pan-biosqi-dong" > 一、写盘, BIOS启动< / h2 >
< p > 1.使用 Rufus 将下载好的 ATV 镜像写入U盘。< / p >
< p > 2.将U盘插到目标主机上, 并设置 BIOS-boot 优先启动,不同设备进入 BIOS 的按键不同, 大部分是F2或者DEL; < / p >
< h2 id = "er-kai-shi-an-zhuang" > 二、开始安装< / h2 >
< p > 1.boot 成功后可以看到如下界面:< / p >
< p > 2.我们选择自动安装:< / p >
< p > 3.经过跑码后进入若干个选项,一路 yes 过去,文件系统选 ext4;< / p >
< p > 随后运行 ATV , 并拔出U盘; < / p >
< h2 id = "san-jin-ru-googlejie-mian" > 三、进入Google界面< / h2 >
< p > 由于国内网络环境问题,导致一些界面无法进入,可使用如下方法或全局科学。< / p >
< p > 1.如果卡在 Google的logo 界面或者动画比较缓慢,或者重启后无法进入 ATV 界面,需要在< code > BIOS-Advanced-OS selection< / code > 中将其设置为Windows 8.X或者Android。< / p >
< p > 2.然后可以看到 PayPal 界面,这里使用可以 < code > Ctrl+Alt+F1< / code > 进入命令行界面,随后输入< / p >
< p > < code > pm disable com.tosanthony.tv.networkprovider #注意空格< / code > < / p >
< p > 回车执行,随后按< code > Ctrl+Alt+F7或F8< / code > 回到图形界面。< / p >
< p > 3.下一步,我们可以看到自动更新界面,这里我们需要禁用它:< / p >
< p > 同样< code > Ctrl+Alt+F1< / code > 进入命令行界面,随后输入< / p >
< p > < code > pm disable com.google.android.tungsten.setupwraith #注意空格< / code > < / p >
< p > 回车执行,随后按< code > Ctrl+Alt+F7或F8< / code > 回到图形界面。< / p >
< p > 4.此时会进入一个 WiFi 界面, 如果你是使用网线直连就没有问题, 或者用键盘连接家里的WiFi, 作者因为工控机没有WiFi模块在这里卡了半天。< / p >
2025-01-22 17:10:24 +08:00
< p > 5.随后进入了 AndroidTV 的桌面。< / p >
2025-01-02 21:19:48 +08:00
< h2 id = "si-an-zhuang-ruan-jian-bing-she-zhi-zhuo-mian-qi-dong" > 四、安装软件并设置桌面启动< / h2 >
< p > 1.首先我们在设置中找到“设置”> “设备首选项”> “关于”, 然后在“构建”上点击几次以解锁“开发人员”选项, 随后开启USB调试开关。< / p >
2025-01-22 17:10:24 +08:00
< p > 2.随后在设置 > 设备首选项 > 关于 > 状态中找到并记下IP 地址, 然后用Tiny ADB连接上去, 这里使用命令< code > adb connect < IP 地址> < / code > , 随后在ATV端授权连接; < / p >
2025-01-02 21:19:48 +08:00
< p > 3.接着使用命令adb install < path to android app . apk > 将要安装的软件包上传,也可以将文件拖到命令提示符窗口上以复制其路径,回车确认。< / p >
2025-01-22 17:10:24 +08:00
< p > < strong > 一些 ADB 常用命令< / strong > : < / p >
2025-01-02 21:19:48 +08:00
< pre style = "background-color:#151515;color:#e8e8d3;" > < code > < span > adb reboot #将重启 Android 设备。
< / span > < span >
< / span > < span > adb reboot recovery #将设备重新启动到恢复模式。
< / span > < span >
< / span > < span > adb push < local> < remote> #将文件从您的 PC 复制到您的 Android 设备。
< / span > < span >
< / span > < span > adb shell wm density < dpi> #改变显示器的像素密度。
< / span > < span >
< / span > < span > adb kill server #切断 PC 和 Android TV 之间的连接。
< / span > < / code > < / pre >
< p > 4.如果存在一些软件无法安装, 可开启ARM兼容层, 具体方法为在 < code > dl.android-x86.org/houdini/9_y/houdini.sfs< / code > 中下载得到< code > houdini.sfs< / code > ,把文件名改成< code > houdini9_y.sfs< / code > , 随后拷贝进U盘, 进入命令行界面, 输入 < code > ls< / code > 找到 storage 目录,输入 < code > cd storage< / code > 进入你的U盘, 输入 < code > ls< / code > ,查看你拷贝的 < code > houdini9_y.sfs< / code > 文件,并复制到该目录下。< / p >
< pre style = "background-color:#151515;color:#e8e8d3;" > < code > < span > cp houdini9_y.sfs /system/etc
< / span > < span >
< / span > < span > enable_nativebridge
< / span > < span >
< / span > < span > reboot
< / span > < / code > < / pre >
2025-01-22 17:10:24 +08:00
< p > 5.安装一些软件包后我们发现需要代替掉ATV自带的桌面, 从而形成海报墙的效果, 这和 linux 的桌面环境切换有异曲同工之处。注意:替换前需要已经安装完成其他桌面!!!!(比如 ATV Launcher )我们使用以下命令禁用 google 默认的桌面。随后重启, 即可看到ATV的海报墙。< / p >
2025-01-02 21:19:48 +08:00
< p > < code > pm disable-user --user 0 com.google.android.tvlauncher < / code > < / p >
< p > 恢复原有桌面:< / p >
< pre style = "background-color:#151515;color:#e8e8d3;" > < code > < span > C:\Users\root> adb shell
< / span > < span > generic_x86:/ $ su
< / span > < span > generic_x86:/ # pm enable --user 0 com.google.android.tvlauncher
< / span > < span > Package com.google.android.tvlauncher new state: enabled
< / span > < / code > < / pre >
< h2 id = "hou-ji" > 后记< / h2 >
2025-02-03 19:35:55 +08:00
< ul >
< li >
2025-01-02 21:19:48 +08:00
< p > < a href = "https://github.com/googlesamples/leanback-showcase" > Android TV google 官方 TV 库< / a > < / p >
2025-02-03 19:35:55 +08:00
< / li >
< li >
2025-01-02 21:19:48 +08:00
< p > < a href = "https://github.com/boxmate/tvframe" > 智能电视,电视盒子开发 SDK< / a > < / p >
2025-02-03 19:35:55 +08:00
< / li >
< li >
2025-01-02 21:19:48 +08:00
< p > < a href = "https://github.com/EZJasonBoy/FocusChangeAnimation" > 选中框切换动画,适用于电视< / a > < / p >
2025-02-03 19:35:55 +08:00
< / li >
< li >
2025-01-02 21:19:48 +08:00
< p > < a href = "https://github.com/FrozenFreeFall/Android-tv-widget" > Android tv, 盒子, 投影仪 控件< / a > < / p >
2025-02-03 19:35:55 +08:00
< / li >
< li >
2025-01-02 21:19:48 +08:00
< p > < a href = "https://github.com/genius158/TVProjectUtils" > TV 项目常用工具(焦点问题,适配问题等.)< / a > < / p >
2025-02-03 19:35:55 +08:00
< / li >
< / ul >
2025-01-02 21:19:48 +08:00
< / div >
< div class = "pagination" >
< div class = "pagination__title" >
< span class = "pagination__title-h" > Thanks for reading! Read other posts?< / span >
< hr / >
< / div >
< div class = "pagination__buttons" >
< span class = "button previous" >
< a href = "https://blog.dich.bid/awesome-android-root/" >
< span class = "button__icon" > ←< / span >
< span class = "button__text" > 综合工程:安卓刷机与root教程< / span >
< / a >
< / span >
< span class = "button next" >
< a href = "https://blog.dich.bid/awesome-chromebook/" >
< span class = "button__text" > 综合工程:ChromeBook研究记< / span >
< span class = "button__icon" > →< / span >
< / a >
< / span >
< / div >
< / div >
< / div >
< / div >
< footer class = "footer" >
< div class = "footer__inner" >
< div class = "copyright" >
< span > ©
2025
Dichgrem< / span >
< span class = "copyright-theme" >
< span class = "copyright-theme-sep" > :: < / span >
Theme: < a href = "https://github.com/pawroman/zola-theme-terminimal/" > Terminimal< / a > by pawroman
< / span >
< / div >
< / div >
< / footer >
< / div >
< / body >
< / html >