Featured image of post 创维电视改造实录 两次变砖与踩坑清单

创维电视改造实录 两次变砖与踩坑清单

为了开机直进飞牛影视,我在这台创维电视上把它禁成了砖两次。记录完整操作步骤、两次事故的根因,以及一堆只有实际操作才会遇到的坑

   
文章摘要
一台 Android 9 的创维电视,为了让开机跳过厂商桌面直进飞牛影视,我把它禁成了砖两次。这篇记下完整的操作路径、两次事故的根因,以及那些只有真上手才会遇到的坑

家里这台创维电视(T963 平台,Android 9,Amlogic T5 四核,2GB 内存,24GB 存储)平时主要用飞牛影视看 NAS 上的片。用久了有个想法:能不能开机直接进飞牛,跳过厂商那堆推广位。

折腾了一下午,结论先说:这台机器的开机流程绕不开厂商桌面,我把它禁成了砖两次。

下面是完整的操作路径和踩过的坑。

一、起点:为什么想换桌面

开机流程是这样的:

开机 → 创维桌面(含开屏广告、推荐位)
     → 手动点飞牛影视图标
     → 进媒体库

两个不舒服的点:每次都要手动找图标;创维桌面上的推广位很碍事。

自然的想法就是:装个第三方桌面,把它设成默认 HOME,让开机直接落到它上面。

二、第一次尝试:禁掉创维桌面

设备上装了两个第三方桌面做备份:

com.spocky.projengmenu   Projectivy Launcher
com.leanbitlab.ltvL      LTvLauncher(开源,有 armeabi-v7a 专用包)

ADB 是开着的(电视的调试开关在工厂菜单里,后面细说)。先试组件级禁用:

adb shell pm disable-user --user 0 com.tianci.movieplatform/com.ccos.cooui.movieplatform.MainActivity

结果报错:

Security exception: Shell cannot change component state for
com.tianci.movieplatform/com.ccos.cooui.movieplatform.MainActivity to 3

组件级别被权限挡死了。退一步试包级:

adb shell pm disable-user --user 0 com.tianci.movieplatform
# Package com.tianci.movieplatform new state: disabled-user

成功了。 而且当场验证全是好的:

# 创维桌面启动不了(符合预期)
adb shell monkey -p com.tianci.movieplatform -c android.intent.category.LAUNCHER 1
# → No activities found

# 按 HOME 能回第三方桌面
adb shell input keyevent KEYCODE_HOME
# → 回到 Projectivy

# 第三方应用不受影响
adb shell monkey -p com.trim.tv -c android.intent.category.LAUNCHER 1
# → 飞牛影视正常启动

三项全过,看起来没问题。然后重启。

重启后电视卡在 SKYWORTH logo。

120 秒后状态是:

ping            不通
ip neigh        INCOMPLETE(ARP 层都没回应)
路由器设备列表   电视彻底消失
遥控器          完全无响应

遥控器失灵是因为输入服务没起到桌面态。这台机器底部只有一个物理按键,用它进 recovery 恢复了出厂。

三、恢复:单按键机型的 recovery

这类只有一个物理键的电视,进恢复模式的方法:

1. 拔掉电源
2. 按住机身那个键不放
3. 插回电源,继续按住 10-15 秒
4. 屏幕出现黑底白字菜单后松手

菜单只有三项:

使用U盘或SD卡升级
清除所有数据
重启

光标默认停在「U盘升级」上,没有升级包时选它什么也不会发生,要按「下」键移到「清除所有数据」。

注意:进了 recovery 之后遥控器就能用了,这一层不依赖 Android framework,不用再去摸机身键。

恢复完是出厂状态,所有第三方 App 全没了。

四、恢复出厂后的第一件事:开 ADB

这里有个容易卡住的点:恢复出厂会把 ADB 调试开关一起清掉。症状是 adb connect 报 Connection refused——不是 No route to host,是设备在线但端口没服务,很容易误判成电视又挂了。

创维的 ADB 开关不在开发者选项里,在工厂菜单:

设置 → 信息 → 遥控器按 上 上 下 下 左 右 左 右

(对,就是魂斗罗那个密码。)

会弹出一个黑底绿字的调试菜单,里面有一堆开关:

单键开关     关
串口模式     关
ADB开关      关     ← 改成「开」
看门狗开关   开     ← 保持开
系统升级
操作Flash_Eeprom
调测恢复
白平衡恢复
开机模式     记忆断电前状态
清除激活数据

把「ADB开关」切成「开」,返回退出,adb connect 就通了。

五、第二次尝试:这次只禁创维

恢复之后我以为是上次的姿势不对。上次禁了两个桌面(创维 + Projectivy),只剩 LTvLauncher 一个,可能备份不够。

这次做足了准备再试一次:

Projectivy   ✓ 启用,验证能独立启动
LTvLauncher  ✓ 启用,验证能独立启动
创维桌面     准备禁用

禁用前的完整快照:

默认桌面     com.leanbitlab.ltvL/.MainActivity
无障碍服务   com.leanbitlab.ltvL/.LauncherAccessibilityService

禁用之后当场验证同样全是好的:创维桌面报 No activities found、按 HOME 回第三方桌面、第三方应用正常。

重启。又卡在 SKYWORTH logo。

同样的症状:ping 不通、ARP INCOMPLETE、路由器列表里没有它、遥控器无响应。

六、根因:不是备份不够,是这个包不能动

两次的结果一致,且第二次只禁了创维一个包、另外两个桌面都完好可用——说明根因不是「备胎不够」,而是 com.tianci.movieplatform 这个包本身承载了开机流程必需的系统组件。

禁掉之后的崩溃发生在 framework 层:网络栈、adb、输入服务全部没起来。这种情况下任何第三方桌面都救不了,因为它们压根没机会被启动。

结论:这台电视不能禁用创维桌面。开机闪几秒厂商界面是它的固有行为,无解。

(有 root 的话可以改系统层绕过,但 Amlogic T5 这类电视专用芯片没有第三方 ROM,刷机失败也没有 USB 救砖退路,不值得。)

七、正确做法:不动系统包,用无障碍抢 HOME

如果只是想换桌面(而不是彻底消除厂商界面),有安全的办法:不禁用创维桌面,改用第三方桌面自己的无障碍服务在按键层截住 HOME 键。

以 LTvLauncher 为例:

# 先查它的无障碍服务组件名
adb shell dumpsys package com.leanbitlab.ltvL | grep -iA2 AccessibilityService
# → com.leanbitlab.ltvL/.LauncherAccessibilityService

# 启用
adb shell settings put secure enabled_accessibility_services com.leanbitlab.ltvL/.LauncherAccessibilityService
adb shell settings put secure accessibility_enabled 1

实测效果:只设默认桌面(set-home-activity)时按 HOME 还是回创维,因为厂商应用优先级更高;启用无障碍之后按 HOME 立刻回到 LTvLauncher,而且创维桌面一根手指都没碰,随时可退。

验证判据:只能看「按 HOME 后的前台」

cmd package resolve-activity 显示默认桌面是第三方,完全不作数。唯一可信的判据是实际按 HOME 后 dumpsys 里的 ResumedActivity:

adb shell input keyevent KEYCODE_HOME
adb shell dumpsys activity activities | grep -m1 ResumedActivity

两个桌面会打架

如果同时装了 Projectivy 和 LTvLauncher,并且两个的无障碍都开着,HOME 键归谁是不确定的——先注册的赢。

实测发现一个反直觉的现象:即使把 Projectivy 的无障碍关掉,只要它的进程还活着,HOME 键依然被它抢走。强制停止进程之后才归 LTvLauncher:

adb shell am force-stop com.spocky.projengmenu
# 之后按 HOME → 回 LTvLauncher

所以「哪个桌面接管 HOME」和「哪个进程在跑」直接相关,不只是无障碍开关。

八、开机自动启动应用:延迟是关键

如果想开机直接进某个应用(而不是停在桌面),需要桌面本身支持「开机时自动启动」功能。Projectivy 有这个功能,LTvLauncher(FLauncher 派生)没有。

配置前提是它的无障碍服务必须启用,否则进程在开机时根本不会被拉起,自启逻辑自然不会执行:

adb shell settings put secure enabled_accessibility_services com.spocky.projengmenu/.services.ProjectivyAccessibilityService
adb shell settings put secure accessibility_enabled 1

然后是延迟。这一步不看日志根本想不到:

16:34:31  目标应用启动(SplashActivity)
16:34:37  WiFi 才连上(CONNECTED)

应用比网络早启动 6 秒,扫不到局域网里的媒体服务器,直接停在「选择服务器」页面,然后被厂商桌面顶到后台。

解决办法是把启动延迟调大。延迟滑杆在设置界面里只能用遥控器左右方向键调,input tap 点不动:

Projectivy 设置 → 电源 → 自动启动延迟
调到 25 秒

25 秒对 6 秒的 WiFi 就绪时间有充分富裕。

九、一堆只有真上手才会遇到的坑

APK 从哪拿

App来源
Kodimirrors.kodi.tv/releases/android/arm/,注意文件名是 armeabi-v7a 不是 armv7a
ProjectivyGitHub spocky/miproja1/releases
BBLL(B 站第三方无广告)GitHub xiaye13579/BBLL/releases
Emby / Spotify TVapkpure 的下载接口

apkpure 有个反直觉的点:它的网页版有 Cloudflare 挑战,无头浏览器也过不去,但下载接口直接连就能拿到:

curl -sL -A "Mozilla/5.0 (Linux; Android 9) AppleWebKit/537.36" \
  -o out.xapk "https://d.apkpure.com/b/XAPK/<包名>?version=latest"

必须带 -L(先 302 再 200),不带只能拿到 415 字节的 HTML。

XAPK 不是普通 APK

下载到的 .xapk 解压后是多个 split 包,主包必须和 native 库、语言包、资源包一起装:

unzip -o -q app.xapk -d d/
adb install-multiple -r d/主包.apk d/config.armeabi_v7a.apk d/config.zh.apk d/config.xhdpi.apk

只装主包会显示 Success,但缺 native 库和资源,启动异常。

自绘 UI 是 adb 的死角

不是所有界面都能用 adb 点。判断方法很简单——这两个现象同时成立就放弃:

uiautomator dump 报 could not get idle state,或只拿到状态栏
input tap / keyevent 完全不改变界面状态

这次遇到三个这样的界面:Emby 的 Connect 配对页、Projectivy 的设置面板、飞牛影视的登录页。Emby 那个页面我把 tap、swipe、DPAD、ENTER、TAB、BACK、MENU 全试了一遍,一个都不起作用。

这类界面只能人工操作。 试两轮不成就转人工,不要耗在按键组合上。

官方 App 的下载链接带签名

飞牛 TV 的官网下载页 HTML 里埋着全部 APK 文件名:

https://.../app/FNTV_1.4.2_<build>.apk

但直接 curl 一律 403 Forbidden——需要 ?sign=<32位hex>&t=<时间戳> 服务端签名。签名推不出来(试过 md5/sha1/sha256 × 各种拼接,全不命中,复用别的包的签名也被拒)。

唯一可行路径是扫码:二维码里就是带签名的完整 URL。

两个包名差一个字母

com.trim.tv      飞牛TV        49MB   ← 电视端要这个
com.trim.media   飞牛播放器    72MB   ← 手机/平板版

后者也能装上、进程也能起来,但界面不适配遥控器,启动后直接退回桌面,logcat -b crash 里没有任何记录。装完必须验证前台是不是它本身,不能只看 install Success。

十、最后的注意事项清单

关于禁用系统应用

✗ 不要禁用厂商桌面包           会导致开机 framework 层崩溃,只能恢复出厂
✗ 不要以为"备用桌面够多就安全"  禁掉的包承载开机流程,备用桌面没机会启动
✓ 要换桌面,用第三方桌面的无障碍服务抢 HOME 键
✓ 每改一项立刻验证,别一次做到位

关于恢复

✓ 恢复出厂后 ADB 会关闭,要去工厂菜单重新打开
✓ 工厂菜单入口:信息界面按 上上下下左右左右
✓ 单按键机型:拔电 → 按住机身键 → 插电 → 按住 10-15 秒进 recovery
✓ 进了 recovery 遥控器就能用(不依赖 framework)

关于自动化

✓ 自绘 UI 试两轮就放弃,转人工
✓ 判断依据:uiautomator 拿不到控件 + 所有按键无效
✓ 开机自启的延迟一定要大于 WiFi 就绪时间(实测 6 秒,设 25 秒)

十一、收尾

这台电视现在的状态:

飞牛影视    已装已登录,开机自动启动
Projectivy  桌面 + 负责自启
LTvLauncher 备用桌面
创维桌面    保持启用(碰它就变砖)
开机流程    闪几秒厂商界面 → Projectivy → 自动进飞牛媒体库

两次变砖的代价是恢复出厂两次,所有 App 重装两遍。但这套流程现在是确定的、可复现的——下次再动这类设备,知道哪些线不能踩。

最后一句:在没有 root、没有第三方 ROM、没有 USB 救砖退路的设备上,任何改动系统包的念头都先放一放。厂商桌面丑是丑,但它能开机。

晚来天欲雪,能饮一杯无