老安卓能不能用 ElderTV:查完的结论是换个盒子
有人问我,家里的电视或盒子是安卓 4.x、5.x,装不上 ElderTV,能不能支持一下?还有人建议内置腾讯的 X5 浏览器内核来兼容老系统。这几天专门查了一轮,先说结论:
- 安卓 7.0 及以上:现在就支持。查的过程中发现 7.0 上有两个问题:一部分站点开了会崩,一部分 https 片源因为证书问题放不出来。两个都在 1.1.5 里修好了。
- 安卓 7.0 以下:不打算做。花一两百块淘一台二手的安卓 9 以上的盒子,或者三百块左右买台新的,比我单独维护一个老版本分支便宜得多。
X5 只能管到直播:点播不经过浏览器内核,直播用的是系统自带的 WebView。下面细说。
这篇的数字来自两部分:一是我从公开订阅里收集的 159 个插件包,用脚本逐个分析;二是一台安卓 7.0 的模拟器,在上面实际运行。没有在真正的老电视、老盒子上测过。
老设备卡在四个地方,X5 只管得到其中一个
第一,ElderTV 自己用到的组件最低要求安卓 6.0。 保存观看记录的数据库组件、播放器组件,新版本都已经不支持 6.0 以下。ElderTV 现在定的最低版本是 7.0。
第二,插件里调用了老系统没有的功能。 第三方站点大多靠插件包(jar)运行,插件是别人写的。比如处理日期的一套功能,要安卓 8.0 才有。插件在 8.0 以下也能装上、打开,但一执行到这一句就崩。这和装什么浏览器内核无关。
第三,直播依赖系统自带的 WebView。 我一开始以为浏览器内核跟这件事无关,查下来直播是例外。点播的搜索和播放确实不经过浏览器内核,但“看电视直播”要用系统的 WebView,版本要在 Chrome 60 以上。安卓 7.0 模拟器自带的是 52,直播页面打不开;我家雷鸟电视是 83,所以一直没发现。没有谷歌商店的老设备,WebView 多半升级不了。X5 能解决的只有这一条,要不要为直播内置浏览器内核,还要单独评估。
第四,安卓 7.0 不认 Let’s Encrypt 的证书。 很多片源的 https 地址用的是这家的免费证书,7.0 系统里没有它的根证书,握手直接失败,播放器显示的却是“连接超时”,海报也加载不出来。我在 ElderTV 里内置了它的两张根证书(ISRG Root X1、X2),模拟器上播放和海报都恢复了,1.1.5 已经带上。
实测:每一档系统能跑多少插件
我写了个脚本,读每个插件里每个站的代码,看它能执行到哪些系统功能,再和各版本安卓自带的功能对照。159 个插件包里,有 38 个是加密的,看不到真实代码,不计入;剩下的一共 6509 个站点类(一个类大致对应一个站)。
| 系统 | 能跑的比例 | 说明 |
|---|---|---|
| 安卓 4.1 | 24% | 一个 4.4 才有的文字编码功能,就挡住了 1479 个站 |
| 安卓 4.4 | 60% | |
| 安卓 6.0 | 70% | |
| 安卓 7.0 | 84% | 在模拟器上抽样验证过,见下文 |
| 安卓 8.0 | 95% |
这个表是脚本推算的,偏保守。脚本只要发现某条代码路径可能用到新功能,就算这个站跑不了;但实际使用时,那条路径不一定会走到。
为了看它到底准不准,我在安卓 7.0 模拟器上实际运行了 10 个插件包里的 115 个站点类,依次调用首页、分类、搜索、详情:
- 脚本判断能跑的 60 个类,没有一个因为系统缺功能出错。
- 脚本判断会崩的 55 个类,确认崩了 15 个。剩下 40 个这次没走到出问题的代码,原因是调用时没带真实的片源参数。
也就是说,脚本不会漏判,但会多判。真实能跑的比例比表里高一些,具体高多少还没有数据。
安卓 7.0:1.1.5 起自动避开会崩的站
7.0 是 ElderTV 支持的最低版本,上面那 16% 的站,用户点进去就是空白或报错。所以我把判断做进了聚合:电视在汇总订阅时,逐个检查插件里的站在这台电视上能不能跑,跑不了的就不放进列表。手机上的聚合控制台里,被剔除的站会归到“系统版本不支持”这一项。
判断用的是这台电视自己。电视本身有哪些功能,直接问系统;本机没有、但新版安卓里有的,才算缺失。这样厂商改过的系统也能判准,插件里那些在任何系统上都不存在的废代码也不会误伤。每个插件包在一台电视上只检查一次,结果会存下来。
在安卓 7.0 模拟器上装了完整的 ElderTV,用一个包含 3 个插件包、35 个站的测试订阅走了一遍聚合:
- 预测会崩的 17 个站,全部被剔除。
- 预测能跑的站全部保留,只有 5 个网盘站被原有的“网盘或需要登录”规则剔除,和这次的改动无关。
- 3 个插件包的检查分别用了 0.17、0.63、0.18 秒;第二次聚合直接读之前存下的结果,不再检查。
代价是偏保守:在模拟器的那轮实测里,有 100 个类调用时没出错,其中 33 个也会被藏起来。在 7.0 的电视上,你会看到站点变少,但不会看到点进去就崩的站。8.0 以上的电视基本不受影响。
这部分在 1.1.5 里。另外,只有打开聚合时才会这样过滤;在设置里直接填片源地址的,不会过滤。
为什么不给 7.0 以下单独做一版
| 做法 | 工作量 | 能跑的站 |
|---|---|---|
| 最低版本降到安卓 6.0 | 约 1 到 2 天(估算) | 约 70% |
| 安卓 4.4、5.x | 在 2022 年的老代码上另起一个分支,按周算 | 约 60%,还有老代码自带组件的兼容问题没查 |
| 安卓 4.1 | 同上 | 24%,不值得 |
老代码几乎用不上 ElderTV 现在的东西:报告问题、应用内更新、聚合、安全拦截,都要在老代码上重做一遍。之后每修一个问题、每发一个版本,都要做两份。这笔持续的维护成本,远比一次性的开发工作量大。
所以我的建议是换盒子。下面这些价格来自网上的选购文章,以购买时为准:
- 全新:小米盒子 5 标准版(2GB+32GB)售价 299 元,基于安卓 14;当贝 H5 Pro 参考价 379 元。
- 二手:小米盒子 4S Pro 是安卓 9.0,多个来源都这么写。二手价我没查到可靠数据,闲鱼上一两百块应该能买到,以实际成交为准。
买二手盒子时,先在“设置 → 关于”里看安卓版本,9.0 及以上再买。按上面的数据,8.0 已经能跑 95% 的站,选 9.0 是给以后的插件留余量。
旧手机能不能当盒子
家里有闲置旧手机的,可以先看看下面四个条件。我没有实测过这条路,下面是查资料整理的。
- 系统 7.0 以上,最好 9.0 以上。 理由和选盒子一样。想看直播的话,还要看手机的 WebView 能不能升级到 Chrome 60 以上。
- 能把画面接到电视上。 有线连接:Type-C 口的手机,需要支持视频输出(DP Alt Mode)。这多见于旗舰机,有 Type-C 口不代表能输出画面,要查这款手机的规格。更老的 Micro USB 口手机,需要支持 MHL。还要确认接着电视时能同时充电。无线投屏的话,要求电视本身能接收投屏;能投屏的电视,多半可以直接装 ElderTV,不需要手机中转。
- 用遥控器或手指操作。 ElderTV 的界面是按遥控器设计的。写这篇的时候我顺手做了触屏适配,1.1.5 起生效:原来在手机上每一项都要点两下才能打开,现在点一下就行,提示文字也从“按确定键”换成了“点一下”。这些在安卓 7.0 的手机模拟器上测过,还没在真手机上测。配一个蓝牙遥控器,老人用起来和盒子一样。
- 一直插着电。 手机长期满电、发热,电池容易鼓包。有的手机有“充到 80% 就停”的充电保护,要打开。电池一旦鼓起来,就要马上停用。
四条都满足的旧手机不多,主要是几年前的旗舰机。即便都满足,给老人日常用也不如盒子:一个遥控器就能操作,没有电池,不用担心发热鼓包。手边正好有一台支持视频输出的旧旗舰、自己又愿意折腾的,可以试试。
最后用一张图把选择理一下:
剩余问题和进度
| 问题 | 现状 | 下一步 |
|---|---|---|
| 7.0 上自动隐藏会崩的站 | 1.1.5 已带上;模拟器上完整走过一遍聚合,结果和预期一致 | 等安卓 7.0 设备用户的反馈 |
| 7.0 不认 Let’s Encrypt 证书 | 1.1.5 已带上;模拟器上播放和海报都恢复了 | 等安卓 7.0 设备用户的反馈 |
| 直播要求 WebView 在 Chrome 60 以上 | 7.0 模拟器自带 52,直播进不去 | 单独评估要不要为直播内置浏览器内核 |
| 判断偏保守 | 浅层实测里没出错的类,约三分之一也被藏掉 | 根据大家的报告再调 |
| 直接填片源地址时不过滤 | 只在聚合时检查 | 看反馈决定要不要加 |
| 用户实际在用什么系统 | 还没有数据 | “报告问题”里加上系统版本,再决定 6.0 要不要做 |
| 手机上使用 | 触屏点一下就能打开,手机模拟器上测过;真手机没测过 | 真手机上测一遍;给老人手持用的竖屏界面在规划 |
下载
最低要求:安卓 7.0(Android 7.0)及以上。大多数电视和盒子都满足,安卓 7.0 以下的老设备装不上。
复制到浏览器打开,前两个是中转地址,国内一般能直接下。
32 位(大多数电视装这个,约 99MB):
64 位(装 32 位提示不兼容时用,约 114MB):
GitHub 原地址: https://github.com/riowang88/ElderTV/releases/tag/v1.1.5
中转站是第三方的,不归我管,一条打不开就换另一条。
装法:
- 下载 APK,拷到 U 盘,插到电视上
- 用电视的文件管理器打开,提示未知来源就去设置里允许
- 装好后在“设置 → 高级设置 → 点播地址”填片源地址,或者打开聚合
已经装了 1.1.1 到 1.1.4 的,首页右上角会显示“有新版本”,点它就能在应用里更新,也可以直接覆盖安装。更早的版本直接覆盖安装。观看记录都会保留。
1.1.5 还修了解析成功后只播第一段就卡住、片源地址失效时一直转圈等问题,完整内容见 GitHub 原地址的发版说明。
ElderTV 不内置任何片源,地址需要自己填。
ElderTV 按 GPL-3.0 发布,对应的源码压缩包在 GitHub 原地址的 Release 页面里。
这篇的数字来自 159 个公开插件包和一台安卓 7.0 模拟器,没有在真正的老电视、老盒子或手机上测过。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!












