MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)

• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC)
• 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库)
• 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo
增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
This commit is contained in:
MeowOS Dev committed 2026-08-30 01:12:34 +08:00
commit 245bee2946
136 files changed
+32730

No files matched your search

+79
View File
@@ -0,0 +1,79 @@
#!/bin/bash
# verify_meow_m22.sh — R3 Pro II MeowOS 常驻主界面 + 系统拔营(挂卡/联网)真机验证编排
#
# 前提:设备已在 MeowOS 模式(播放器已死)且联网可 SSH;或先在此脚本内确认无播放器。
# 场景(用户实测 M2.1 三现象 + 拔营):
# - 现象3:启动即显示应用列表(非播放器死帧/启动图卡屏)→ `shot m22_start`
# - 现象1:BACK TO PLAYER 显示「重启后返回播放器」提示并留下 → `--sim-exit-tap`
# - 现象2:无播放器时不备份/不冻结/不 SIGCONT、不恢复死帧 → 全程 logmsg 确认
# - 拔营:TF 卡自动挂载(ensure_card_mounted)、WiFi 自动联网(ensure_wifi)
#
# 用法:./verify_meow_m22.sh <设备IP> [ssh私钥]
# ./verify_meow_m22.sh <device_ip>
#
# 纪律:不 killall(仅已知 pid SIGTERM);禁 SIGUSR1;禁经 hiby_player.sh;
# 启动前 rm -f /data/recovery_all;本脚本不刷机。
set -u
DEV="${1:-<device_ip>}"
KEY="${2:-$HOME/Project/R3ProII/ssh_keys/<device_key>}"
ROOT="$HOME/Project/R3ProII"
LAUNCHER="$ROOT/patch_v2/meow_launcherd/meow_launcherd"
SSH="ssh -i $KEY -o StrictHostKeyChecking=accept-new -o ConnectTimeout=8"
SCP="scp -i $KEY -o StrictHostKeyChecking=accept-new"
s() { timeout 60 $SSH root@"$DEV" "$1"; }
sbg() { timeout 60 $SSH root@"$DEV" "$1" >"$ROOT/device_test/$2.raw" 2>/dev/null; }
shot() {
# 抓取当前 fb0 显示帧(buffer0, 480*720*2)并起名
s 'dd if=/dev/fb0 of=/data/_m22.raw bs=691200 count=1 2>/dev/null' >/dev/null
local name="${1:-m22_shot}"
sbg 'cat /data/_m22.raw' "$name"
local sz=$(stat -c%s "$ROOT/device_test/$name.raw")
if [ "$sz" = "691200" ]; then
python3 "$ROOT/device_test/fb2png.py" "$ROOT/device_test/$name.raw" "$ROOT/device_test/$name.png" >/dev/null 2>&1
python3 "$ROOT/device_test/ascii_fb.py" "$ROOT/device_test/$name.raw" 96 40 > "$ROOT/device_test/$name.txt"
echo "saved device_test/$name.png/.txt (raw $sz)"
else
echo "!! unexpected raw size $sz (期望 691200); 可能 fb0 非 RGB565 或 dd 失败"
fi
}
echo "==> 连接 $DEV ..."
s 'echo OK' >/dev/null || { echo "!! SSH 失败(设备可能在 MeowOS 未联网,或未开机)"; exit 1; }
echo "==> 红线:清 /data/recovery_all"
s 'rm -f /data/recovery_all; ls /data/recovery_all 2>/dev/null && echo FLAG || echo no_flag'
echo "==> 当前播放器状态(MeowOS 模式应无)"
s 'pidof hiby_player && echo PLAYER_ALIVE || echo NO_PLAYER'
PLAYER_PID=$(s 'pidof hiby_player' | tr -d ' ')
echo "==> 推送新 launcher 到 /data(不覆盖系统二进制)"
$SCP "$LAUNCHER" root@"$DEV":/data/meow_launcherd_m22
s 'chmod 755 /data/meow_launcherd_m22; md5sum /data/meow_launcherd_m22'
if [ -n "$PLAYER_PID" ]; then
echo "==> 有播放器在跑(HibyOS 覆盖语境)。若要测 MeowOS 常驻需先杀之(已知 pid SIGTERM):"
echo " 请确认后手动:$SSH root@$DEV 'kill $PLAYER_PID; sleep 2; pidof hiby_player || echo DEAD'"
echo " (本脚本不代杀,避免误触 watchodog;走 MeowOS 启动路径最干净)"
exit 2
fi
echo "==> 前端后台拉起新 launcher(MeowOS 常驻): "
echo " --sim-exit-tap 6000 —— 6s 点 BACK TO PLAYER 行(应 toast「REBOOT TO RETURN TO PLAYER」并留下)"
s 'rm -f /tmp/meow_boot.log; kill $(cat /usr/data/meow_launcherd.pid 2>/dev/null) 2>/dev/null; \
nohup /data/meow_launcherd_m22 --sim-exit-tap 6000 >/tmp/meow_boot.log 2>&1 & echo "launcher pid $!"'
sleep 3
shot m22_start # 现象3:启动即应用列表(非死帧)
sleep 3
shot m22_back_toast # 现象1:BACK TO PLAYER toast
echo "==> 日志(确认不备份/不冻结/不恢复死帧 + 挂卡/联网拔营)"
s 'grep -E "meow mode|sd_0 mounted|wifi not up|menu close|BACK TO PLAYER|card ready" /tmp/meow_boot.log | head -30'
echo "==> 清理:SIGTERM 已知 pid,结束恢复干净"
LPID=$(s 'cat /usr/data/meow_launcherd.pid 2>/dev/null')
[ -n "$LPID" ] && s "kill $LPID 2>/dev/null" || true
s 'sleep 1; kill $(pidof meow_launcherd_m22) 2>/dev/null; rm -f /data/_m22.raw /data/recovery_all; \
grep sd_0 /proc/mounts >/dev/null && echo SD_STILL_MOUNTED || echo SD_UMOUNTED; echo done'
echo "==> 完成。物理交互(热键开关/触摸/按键/音频)留用户真机确认。"