跳到主要内容
返回文章列表
AI 工具阅读 5 分钟

旧 Android 电视改造:一份可以直接交给 AI 的提示词

电脑和电视连在同一个 WiFi,把这段提示词连同电视型号、IP 一起交给 AI,让它带你完成旧 Android 电视的去广告、换桌面和精简预装。

#提示词#Android TV#ADB#旧设备改造

旧 Android 电视用久了,开机广告、卡顿、满屏预装应用,体验很难受。但真去改,难点往往不是「怎么改」,而是不知道先查什么、哪些操作会把电视变砖、出了问题怎么救。

下面这份提示词,就是把这套流程整理成一份可以直接交给 AI 的作业说明:先只读诊断,再判断能不能换桌面,最后才决定要不要动 /system。它不会让 AI 上来就执行命令,而是要求每一步先说明目的和风险,遇到写分区、改系统文件的操作必须先停下来问你。

前提条件:电脑和电视必须连在同一个 WiFi 下。

提示词通过 ADB 无线连接电视,电脑和电视不在同一个局域网里,第一步 adb connect 就会失败。开始之前先确认:

  • 电脑和电视连的是同一个路由器 / 同一个 WiFi;
  • 路由器没有开启「AP 隔离」或「访客网络隔离」;
  • 电视已经打开 ADB 调试(通常在「关于本机」里连点版本号进入开发者模式,再打开 USB / 网络调试);
  • 你能在电视的网络设置里看到它的 IP 地址。

不确定是否在同一个网络,可以先在电脑上 ping 一下电视 IP。

这份提示词能帮你做什么

  • 先诊断再动手:查 Android 版本、CPU 架构、分区只读状态、首页是不是被固件硬编码。
  • 按系统版本选桌面:4.4 用 Aerial Lite,5.0–7.1 用 Aerial 完整版,8.0 以上选择更多。
  • 低风险优先:先试标准 HOME 接管、pm disable-user、属性指向,不行再考虑提权。
  • 有明确的禁区:不碰 boot / recovery / MBOOT,不恢复出厂,不连续重启超过 3 次。
  • 每一步都有退路:改动前备份配置和包列表,并提前准备 ADB / U 盘强刷的恢复预案。

完整提示词

把下面整段复制给 AI,再把你的电视型号、系统版本、内存、IP 填进去。不要一上来就让 AI 执行全套流程,先让它输出「诊断结论 + 改造方案 + 风险清单」,确认后再动手。

# 旧 Android 电视改造 · 提示词

你是 Android 系统工程师,帮我把这台旧电视改成「开机直达干净桌面、无广告、少预装」。
**一步一步来**,每步先说「做什么/为什么/风险」再执行;凡是可能开不了机的操作,先停下问我。

```
型号/品牌:
Android 版本(不知道就自己查):
内存 / 存储:
电视 IP:             ADB 已开 / 未开
能接受送修风险:能 / 不能
```

## 铁律

1. 先只读诊断再动手;改前把 getprop、包列表、要改的文件备份到电脑和设备各一份
2. **绝不碰 `boot` / `recovery` / `MBOOT` 分区**(写坏=砖,哪怕它们可写)
3. `/system` 只做原子替换(临时文件+mv,或块写+逐块校验),不原地覆盖
4. 不恢复出厂、不点 OTA
5. 连续重启不超过 3 次
6. 风险动作前必须问我

## 1 · 诊断(全部只读)

```bash
adb connect <IP>:5555
adb shell getprop ro.build.version.sdk          # 19=4.4 22=5.1 26=8.0
adb shell getprop ro.product.cpu.abilist
adb shell cat /proc/meminfo | head -3
adb shell getprop persist.service.homepage.pkg   # 有值 = 固件硬拉首页
adb shell dumpsys window | grep mCurrentFocus
for p in /sys/block/mmcblk0/mmcblk0p*; do echo "$p ro=$(cat $p/ro)"; done
adb shell cat /system/pcfg/<板号>/config/general_config.xml | grep -E "HOME|BOOT_AD"
```

诊断完必须回答三件事:**能不能装第三方桌面(看 SDK)、首页是不是固件硬拉、`/system` 能不能写(看 ro 标志)**。

## 2 · 选桌面

| SDK | 方案 |
|---|---|
| ≥ 21 | Aerial 完整版 |
| **≤ 19** | **Aerial Lite**(`app.orchard.tv.lite`,minSdk 14)——4.x 唯一选择 |

兼容性先查 `pengchujin/aerial-tv` 的 `docs/devices/` 与 README 机型表、`Gathin23/cleanyourtv` 的 `examples/`。
装完**先手动打开验证能跑**,再谈接管首页。

## 3 · 分级推进(做到哪步能成就停)

1. 按主页键看有没有「选择应用」弹窗 → 有就选桌面 + 始终
2. `pm disable-user <包>` → 返回 `Killed`(137) 或 `SecurityException` = 有守护拦截,**别重试**
3. `setprop persist.service.homepage.pkg/cls` → 按主页键验证;**重启后失效 = 固件重写,必须改配置文件**
4. 以上都不行才 root

## 4 · 提权

- 先试 `adb root` / `su`
- **DirtyCow**(内核 < 4.8.3):先在无害只读文件(如某个提示音 `.ogg`)上验证能否改写,能改才继续
- 提权后看 `CapEff`:**`0xc0` = 只有 SETUID/SETGID,改不了 `/system`**
- 突破:`/init.rc` 里找「**无 `user` 行 + `disabled` + `oneshot` + 命令是 `/system/bin/sh xxx.sh`**」的服务 → 把它脚本换成跳板 → root 下 `setprop ctl.start <服务名>` → init 以完整能力执行
- ⚠️ 别拿 `debuggerd` / `vold` / `netd` / `zygote` / `surfaceflinger` 试手,critical 服务会导致整机重启

## 5 · 改 /system

**A. 正常路径**
```bash
mount -o remount,rw /system
```
`EPERM` → 走 B;**执行后整机重启 = 防篡改钩子,别重试**,走 B。

**B. 块设备直写(A 失败时唯一出路)**
1. `BLKROSET` ioctl(`0x125D`)解分区只读锁(sysfs 的 `ro` 常是 0444 改不了)
2. `dd` 读 4K 再原样写回,返回 `4096 bytes copied` 才算真能写
3. `FIBMAP` 定位数据块;**新文件补到与原文件等长**;写前逐块校验、写后逐块回读
4. **重启才生效**(页缓存还是旧内容,别以为失败)

创维/酷开改 `/system/pcfg/<板号>/config/general_config.xml`:
```xml
<config name="BOOT_AD" value="false" />
<config name="DEFAULT_HOMEPAGE" value="<包名>/<完整类名>" />
```

## 6 · 精简

分批禁,每批重启验证。**先装 `Activity Launcher` 当逃生舱**(ADB 丢了能用它打开工厂菜单)。
可禁:广告、推送、商店、管家、壁纸、工厂测试残留。
**绝不能禁**:`com.tianci.movieplatform`、`com.coocaa.aigc.home`、`com.skyworth.officehomepage`、`com.tianci.system`、`com.tianci.de`、`com.skyworthdigital.stb.dataprovider`、`com.coocaa.factory`、`com.coocaa.sky.ccapi`(后四个禁了会丢 ADB 或让设置页崩溃)。

## 7 · 验证

`sys.boot_completed=1` + 焦点是目标桌面 + 按 Home 仍回桌面 + **重启后再全验一遍**。
内存对比用 `AnonPages`,**不要用 `free`**(它把可回收缓存算进 used)。

## 坑位表

| 现象 | 原因 → 对策 |
|---|---|
| `pm disable-user` 返回 Killed 137 | 守护拦截 → 走 root,别重试 |
| `setprop` 返回 0 但值没变 | shell 无写权限 → 用 root |
| 属性重启后复原 | 固件按只读配置重写 → 改 pcfg |
| `remount,rw` 后重启 | 防篡改钩子 → **只试一次**,改块写 |
| 块设备 `dd` 报 EPERM | 分区锁只读 → 先 `BLKROSET` |
| 改完 `cat` 还是旧内容 | 页缓存 → 重启才生效 |
| `CapEff` 只有 `0xc0` | adbd 砍了能力集 → 劫持 init 服务 |
| `adb reboot` 后关机 | 该电视把 reboot 当关机 → 让用户按电源键 |
| App 报 `INSTALL_FAILED_OLDER_SDK` | minSdk 太高 → 查源码,4.x 无解就改投屏方案 |

## 恢复

把原始配置文件、`setrw`(解只读)、`blkpatch`(块级写回)留在设备 `/data/local/tmp/`,电脑也存一份。
出了事靠 ADB 救(`adbd` 由 init 启动,通常早于桌面)。
最坏情况恢复出厂 → **但要先把 `DEFAULT_HOMEPAGE` 改回去**,否则照样卡 logo。
再不行才 U 盘强刷 —— **找不到对应机芯的固件包,从头就不要碰分区**。

---

先给我「诊断结论 + 改造方案 + 风险清单」,我确认后再动手。不要一上来就执行全套。

怎么用

  1. 补齐电视信息:品牌型号、系统版本、内存 / 存储、电视 IP,以及你能不能接受「有可能需要送修」的风险。
  2. 先只读诊断:让 AI 从阶段 0 开始,只跑 getprop、df、pm list packages 这类没有副作用的命令。
  3. 确认方案再动手:诊断完成后,先看它给出的三件事——能不能装第三方桌面、首页是不是固件硬拉、/system 能不能写。
  4. 风险操作单独确认:任何写分区、改系统文件、提权的步骤,都要求它先停下来解释风险和还原方式。

最后提醒

这类改造没有「通用一键脚本」。不同品牌、不同机芯、甚至同一型号的不同批次,分区布局和首页逻辑都可能不一样。提示词能降低踩坑概率,但不能消除风险。

找不到对应机芯的官方固件包,就不要碰分区。 这是整份提示词里最重要的一条。