ElderTV 1.1.3 和 1.1.4:一个插件崩掉整个进程,更新下载从每秒 20KB 到 1.3MB
- 1ElderTV 1.0.3:第三方源能用了,直播回来了
- 2ElderTV 1.1.0:py 和 js 站能用了,直播会记住坏线路
- 3ElderTV 1.1.2:关掉安全拦截也搜不到片,原因在插件进程
- 4ElderTV 1.1.3 和 1.1.4:一个插件崩掉整个进程,更新下载从每秒 20KB 到 1.3MB本文

1.1.2 发出去的第二天,“报告问题”又收到一条:换了一个订阅源,安全拦截也关了,还是什么数据都没有。查下来和 1.1.2 修的不是同一个原因。修完发了 1.1.3,接着第一次在电视上把应用内更新从头走了一遍,发现下载慢得没法用,于是又发了 1.1.4。这篇两个版本一起写。
下面的截图都来自同一台雷鸟电视(Android 11,32 位)。
1.1.3:关掉安全拦截后,这个订阅还是没数据
这个订阅一共 126 个站,大多数站共用一个插件包。切到其中的“葵花”站,首页一片空白,搜索 99 个站也都没有结果:

报告自动带上的报错,还是上次那条更新检查超时,跟这个问题无关。报告里也没有插件进程的记录,因为上报时插件进程已经不在了。连上电视重新加载这个源,同时看系统日志,过程是这样的:
第一,插件要运行几个系统小程序。 插件先调用 getprop(读设备信息)、chmod(改文件权限)、killall,都被插件进程拒绝了。1.1.2 关闭安全拦截时只放开了原生库,运行其他程序仍然是禁止的。
第二,插件需要的代理库没有生成。 接下来插件要加载一个本地代理库 libwexproxy.so,但这个文件不存在。推测是前面读设备信息失败,下载这个库的那一步也就没成功。放开限制后实测,这个库确实生成了,代理也启动了,证实了这个推测。
第三,插件的后台线程出错,把整个插件进程带崩了。 加载失败后,插件在自己开的后台线程里抛出异常,没有人处理,整个插件进程随之退出。所有站都在这一个进程里运行,所以全部返回空。下次调用会重新拉起进程,然后又崩;连续崩 3 次后,程序会暂停 60 秒不再调用。
改了两处:
- 关闭安全拦截后,插件可以运行其他程序。 设置里写的就是“关:全部放行”,以前实际上放行得不完整。仍然保留的限制:不能给其他进程发信号,不能调试或读写其他进程的内存;插件启动的程序也受同样的限制。代价是插件能做的事更多了,所以这一项只在你主动关闭安全拦截时生效。关闭前的确认框里也写明了这一点。
- 插件自己的后台线程出错时,只结束那个线程。 插件进程照常运行,其他站不受影响,系统日志里会留一条记录。“报告问题”会把插件进程的报错一起带上来。
改后同一个订阅,代理正常启动,“葵花”站的首页有内容了:

1.1.3:设置页的几处小改
- 调试日志的地址打不开:设置里打开“调试日志”后显示的地址缺少访问密钥,用浏览器打开会被拒绝。现在地址里带上了密钥,我在电脑上实测能打开。
- 隐藏了 DoH:这一项用得很少,原来的设置值不变。
- “配置历史”改名为“点播地址历史”,和“直播地址历史”对应。

- 手机推送换了新页面:设置 → 高级设置 → 手机推送。扫码后打开的网页和设置点播地址用的是同一个新页面,粘贴视频链接,点“推送到电视”,电视会直接开始播放。截图里的二维码打了码,因为里面带着这台电视的访问密钥。

电视只有在打开“点播地址”或“直播地址”窗口时,才会接收手机发来的地址。所以从“手机推送”扫码进去的页面只显示推送,从地址窗口扫码进去的页面不显示推送,免得手机上显示“已发送”,电视却没有反应。
1.1.4:应用内更新慢得没法用
应用内更新是 1.1.1 加的,一直没在电视上完整走过。1.1.3 发布后,我在装着 1.1.2 的电视上试了一次,发现三个问题。
“有新版本”要等一到一分半钟才出现。 检查更新时,程序按固定顺序一个个问中转地址。排第一的中转地址从我家网络连不上,每次都要等 30 秒超时,才轮到下一个。
更新窗口按确定没反应。 窗口打开时没有选中任何按钮,要先按一下方向键才能选中“更新”。老人很容易卡在这一步。

下载只有每秒 16 到 22KB。 4 分钟才下到 5%,99MB 的安装包要一个多小时。

原因是程序只用第一个能连上的地址,不比较速度,下载再慢也不会换。我在同一个网络里,不走代理,每个地址各下 2MB:
| 地址 | 速度 |
|---|---|
| ghfast.top | 连不上 |
| gh-proxy.com | 150KB/s |
| gh.acmsz.top | 1.5MB/s |
| gh.monlor.com | 365KB/s |
| GitHub 直连 | 747KB/s |
第一个连不上,程序就停在了第二个,而它恰好是能用的地址里最慢的。电视上实际的速度比这张表还要低。
1.1.4 的改法:
- 下载前先测速:点“更新”后,所有地址同时下载开头的 256KB,最多等 8 秒,按实测速度从快到慢排好再开始下。
- 下载中慢了自动换:开始 12 秒以后,如果连续 10 秒的平均速度低于每秒 48KB,就换下一个地址,从已经下好的位置接着下。
- 检查更新同时问所有地址:每个最多等 8 秒,取版本号最新的结果。某个中转站缓存了旧版本的清单,也不会影响判断。
- 更新窗口一打开就选中“更新”。
我先在电视上装了一个 1.1.4 的测试版,再发布正式的 1.1.4,让测试版用真实的发布包走一遍更新。结果:开机 21 秒出现“有新版本”(其中 8 秒是开机后固定的等待时间);窗口打开就选中了“更新”,直接按确定就开始下载:

下载速度在每秒 1.1 到 1.6MB 之间,30 秒到 40%:

大约 3 分半下完,安装包的校验值和签名都通过,交给了系统安装器。整个过程中没有弹出“允许安装未知来源应用”的提示:

有一点要注意:这些改进从 1.1.4 开始生效。从 1.1.1 到 1.1.3 升级到 1.1.4 的这一次,用的还是旧的下载方式,可能仍然很慢。嫌慢可以取消,按文末的地址手动下载安装,以后的更新就快了。
剩余问题和进度
| 问题 | 现状 | 下一步 |
|---|---|---|
| 64 位安装包 | 1.1.2 起每版都发,只确认了构建、签名和架构,还没在 64 位电视上装过 | 找一台 64 位电视或盒子实装 |
| 手机扫码推送后电视开始播放 | 推送页面在浏览器里测过,电视上的页面也能打开;还没用手机实际推送一次 | 用手机推一个视频链接 |
| 斗鱼、虎牙两个 js 站打不开 | 报 'pdfh' is not defined,是 js 运行环境缺函数 | 补上这个函数后再测 |
| 开着安全拦截时插件出错 | 后台线程出错不再带崩进程,这一点和开关无关;但没在开着安全拦截的情况下实测过 | 开着安全拦截再用这个订阅测一次 |
| “报告问题”自动带上的错误不准 | 取的是记录里最后一个异常,两次都是更新检查超时 | 只在闪退时附带异常 |
下载
最低要求:安卓 7.0(Android 7.0)及以上。大多数电视和盒子都满足,安卓 7.0 以下的老设备装不上。
复制到浏览器打开,前两个是中转地址,国内一般能直接下。线路一是这次测下来最快的。
32 位(大多数电视装这个,约 99MB):
64 位(装 32 位提示不兼容时用,约 114MB):
GitHub 原地址: https://github.com/riowang88/ElderTV/releases/tag/v1.1.4
中转站是第三方的,不归我管,一条打不开就换另一条。
装法:
- 下载 APK,拷到 U 盘,插到电视上
- 用电视的文件管理器打开,提示未知来源就去设置里允许
- 装好后在“设置 → 高级设置 → 点播地址”填片源地址,或者打开聚合
已经装了 1.1.1 到 1.1.3 的,首页右上角会显示“有新版本”,点它就能在应用里更新,也可以直接覆盖安装。更早的版本直接覆盖安装。观看记录都会保留。
ElderTV 不内置任何片源,地址需要自己填。
ElderTV 按 GPL-3.0 发布,对应的源码压缩包在 GitHub 原地址的 Release 页面里。
到目前为止,ElderTV 只在这一台雷鸟电视上测试过。其他电视能不能正常用,还没有数据。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!












