按主题分文件。每条结论都标注了「怎么验证的」,方便以后环境变了能重新确认。
| 文档 | 主题 |
|---|---|
| 01-headless-android-build.md | 不装 Android Studio,纯命令行搭 Android 构建环境(WSL2 + JDK 17 + cmdline-tools + Gradle) |
| 02-adb-multi-device.md | ADB 多设备管理:WSL2 mirrored 网络的端口冲突、网络 ADB 持久性差异、USB→TCP 引导、双设备能力对照表 |
| 03-tcl-tv-sideload.md | TCL 电视固件级侧载封锁(OverseasAppConfig)的分析与绕行方案;屏保「按键全被吞」、电视上不能用截图判变化、input tap 实测失效 |
| 04-pico4-notes.md | Pico 4 开发约束:FLAG_SECURE 截屏限制、虚拟 display 机制、输入必须定向注入 -d <panelDisplayId>、不戴头显 10 秒自动休眠、2D 面板几何 |
| 05-gotchas.md | 踩坑速查:adb shell 吞 stdin、Gradle 并发拉依赖 TLS 失败、drvfs 目录缓存损坏… |
| 06-app-conventions.md | 工程目录约定:新增应用的结构、命名、版本号唯一来源(version.properties + SemVer)与发版流程、版本组合、README 要求 |
| 07-debug-ui-capture.md | 应用自截图:让 FLAG_SECURE 设备(Pico 4)也能被 adb 看见 |
| 08-jvm-screenshot-testing.md | JVM 截图测试:不碰设备看 UI,最快的迭代档位 |
| 09-tv-remote-dev.md | 把电视当远程开发终端(三套方案):A = TV Bro + 必须先切 GeckoView 引擎(系统 WebView 是 Chromium 83,会丢 @layer 整份样式表)跑自建 PWA;B = Termux + ssh + tmux(已实测跨机连通);C = herdr-web-ui + SSH 隧道(电视上零安装、局域网不暴露、实体键盘打中文已实测通过)。含电视能力清单、对齐的输入习惯、run-as 驱动 Termux 的自动化技巧 |
| 10-agent-skills.md | Android 开发 Agent Skills 集中管理:官方 android/skills 全量 + 社区 awesome 精选 + 本仓库真机技能;profile 安装到 ~/.agents/skills 供所有项目复用;上游锁文件 + 每周 PR 自动更新 |
所有结论基于以下两台设备,系统版本见 02-adb-multi-device.md:
| TCL 电视 | Pico 4 | |
|---|---|---|
| 地址 | 192.0.2.11:5555 |
192.0.2.29:5555 |
| 型号 | tcl_mt5879_cn |
A8110 / Phoenix |
| 系统 | Android 11 / API 30 | Android 10 / API 29 (PICO OS 5.13.7) |
| ABI | 仅 armeabi-v7a | arm64-v8a + armeabi-v7a |
- 命令在 WSL2 / Windows 原生(Git Bash)里都能执行;平台相关的差异
(adb 路径、timeout、临时目录、python)已由
tools/_common.sh抹平, 新增的坑记在 05-gotchas.md $TV/$TV_ADDR= 电视 serial,$PICO_ADDR= 第二台设备- 「✅ 已验证」= 真机跑通过;「
⚠️ 推测」= 有依据但没实测
文档里出现的 192.0.2.x 是 RFC 5737 文档保留地址段(TEST-NET-1),
不是真实地址,仅用于让示例命令保持可读、可直接复制。
真实地址放在 tools/device.env(已 gitignore),模板见 tools/device.env.example:
cp tools/device.env.example tools/device.env
# 然后填入你的设备地址脚本都从 tools/_common.sh 载入这个配置,所以换设备不用改代码。