概览
dsh-pet-android
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
1. **窗口不是插件能造的**。Android 上任何 `WindowManager.addView` 都需要宿主 App 的 Context 与 `SYSTEM_ALERT_WINDOW`,容器里的 Node 拿不到。所以本插件的成品形态是「页面 + 请求文件 + 载体适配」, 宿主按契约建窗;DSHA 上则由它自己的文本悬浮条承载。`/status.carriers` 会如实报告走的是哪条。 2. **DSHA 目前只能"文本在场",不是完整桌宠**。DSHA 的 3090 桥没有 WebView/图片悬浮窗端点 (`OverlayController` 只画 TextView),插件无法凭空造窗。要完整桌宠,需要 DSHA 把 悬浮层的 TextView 换成加载 `overlay.html` 的透明 WebView——插件侧页面/动画/拖拽已经是成品。 逐移植现状见 [docs/PORT-MATRIX.md](docs/PORT-MATRIX.md)。 3. **不内置权限逻辑**。没有 `Settings.canDrawOverlays`、没有跳系统设置、没有「没权限就退回页面内显示」。 DSHA 返回 `DISABLED` / `NO_PERMISSION` 时插件只做冷却,不重试轰炸、不代用户开开关。 4. **拖动依赖 `screenX/screenY`**。窗口模式下宿主会跟着手指移动窗口,页面必须用**屏幕坐标**算位移 (用 `clientX/clientY` 会自锁)。个别套壳 WebView 若把 `screenX` 降级成页面坐标,表现是 「拖不动」——此时让宿主注入 `DshOverlayHost` 桥并由宿主自己处理拖动。 5. **多宠物 = 多窗口**。每只 `display` 含 `desktop/both` 的宠物各占一个悬浮窗、一个 WebView, 手机上开太多会明显吃内存,建议手机端只留 1 只。文本载体则只显示第一只(按 id 顺序)。 6. **不做右键菜单 / 对话 / 碎碎念开关**。这些是上游浏览器与桌面端的 UI 能力;手机上暂以 上游设置页 + 上游 HTTP 接口(`/whisper`、`/broadcast`、`/anim`、`/chat`)为准。 气泡与点播动画是只读消费:本页面读 `/dsh-pet-7340/state` 的 `pets.<id>.say` 与 `pets.<id>.anim`。 7. **通知、余额、工作状态联动**同样未在悬浮窗里做(上游 `sections.*` 有数据,v1 只消费 `say/anim`; 文本载体只消费 `say`)。 8. **上游未装或未启用**时不会静默黑屏:页面显示「未找到 dsh-pet 上游插件」, `/status.windowReport.upstreamOk=false`;文本载体则什么都不推。 9. **素材走 blob 预取**(与上游浏览器端一致,10s 超时):慢网络下切换动画可能跳过一两个,不影响主体。 10. **没有构建步骤**,`src/` 就是产物;改完代码重启 dsh 即可,不需要 `npm run build`。 因此本包**不做类型检查**:用 `npm test`(三套:smoke / dsha / status-overlay)兜底。 11. 本插件**不能**被「打包进 APK / 启动器」使用:它的宿主侧依赖 dsh 的 WebServer 与 profile 机制, 放进 APK 既违反本项目的形态约束,也无法工作。
