Files
MeowOS-For-R3P2/patch_v2/ncm_app/build_ncm_host.sh
T
AskaEth 294ed6ffc7 test(ncm): M10 宿主回归三套(44 断言)+ 构建脚本 + REPORT §42
- bench/retry_storm_sim.c(25 断言):真实 retry_ctl.c/meta_gate.c,100ms tick 断网
  120s→4 次/间隔 ≥30s;状态每 tick 抖动→2 次;时钟回退→不立即重试且间隔仍 ≥30s;
  worker 45s>间隔→不并发;META 空闲 3 帧/60s(旧 600)、播放 13 帧(≤1/5s)、
  状态抖动 ≤4 帧/秒、元数据变化/seek 立即报、超长标题截断不重报、回退不连发。
- bench/home_retry_sim.c(13 断言):真实 app/ui/home.c 的 home_tick 编进宿主
  (--gc-sections + 桩),断网 120s→4 次重试、单飞、全帧重绘 0 次;
  把真机形态的垃圾 64 位 now 喂给 home_tick 仍为 4 次/≥30s;回在线再断网不清基准。
- bench/meta_ipc_sim.c(6 断言):真实 ipc_media 线程 + 假 launcher AF_UNIX socket,
  空闲 2s 只收到 1 帧 META(旧 ~10 帧),状态翻转恰好多 1 帧,帧头合法。
- build_ncm.sh / build_ncm_host.sh:源列表加 retry_ctl.c、meta_gate.c(host 补
  mem_watch.c,否则 player_manager 链接失败);build_ncm_sims.sh 加三个 sim。
- REPORT §42:真机日志证据(时间戳低/高 32 位拆解、21016 帧 META)、根因三链、
  实现、验证(session_gate 88 / http_truncate 13 / core 139 全过)、真机验证建议。
2026-11-05 13:00:32 +08:00

57 lines
2.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# build_ncm_host.sh — 宿主编译 dev.player.ncm 真实页面(离屏 480x720),用于 MEOW_UI_DUMP 截图自查。
# 思路:gcc 编 SDK 源码(-DMEOW_UI_HOST_TEST, meow_font 打桩 meow_ui_global/render) + 应用源码 +
# 宿主核心库对象(out/core-host/*.o) + 宿主 mbedtls libs。
# 运行:NCM_PAGE=home MEOW_UI_DUMP=/tmp/home.ppm ./ncm_host
cd "$(dirname "$0")"
ROOT="$HOME/Project/R3ProII"
OUT="$PWD/out"
mkdir -p "$OUT/host"
CC_HOST=${CC_HOST:-gcc}
SDK_DIR="$ROOT/patch_v2/sdk"
MBED="$OUT/mbedtls/host"
INC="-I. -I../sdk -I../meow_launcherd -Icore \
-I$SDK_DIR -I$ROOT/patch_v2/meow_launcherd \
-Ivendor/mbedtls/include -Ivendor/jsmn -Ivendor/qrcodegen/c -Ivendor/minimp3 -Ivendor/dr_flac"
echo "==> host SDK objects"
SDK_SRC="meow_ui_gfx meow_ui_sys meow_ui_theme meow_ui_vol meow_ui_log meow_ui_widget \
meow_ui_input meow_ui_activity meow_ui_dialog meow_ui_ime meow_ui_draw meow_ui_view \
meow_ui_img meow_ui_config meow_ui_nav meow_ui_media meow_notify_ipc meow_pinyin \
meow_ui_audio meow_ui_anim meow_ui_box meow_ui_scroll meow_ui_str meow_cachegov"
for f in $SDK_SRC; do
$CC_HOST -O2 -c -DMEOW_UI_HOST_TEST -I"$SDK_DIR" -I"$ROOT/patch_v2/meow_launcherd" \
"$SDK_DIR/$f.c" -o "$OUT/host/sdk_$f.o" || { echo "sdk $f FAILED"; exit 1; }
done
$CC_HOST -O2 -c -DMEOW_UI_HOST_TEST -I"$SDK_DIR" "$SDK_DIR/stb_image.c" -o "$OUT/host/sdk_stb_image.o" || exit 1
$CC_HOST -O2 -c -I"$SDK_DIR" -I"$ROOT/patch_v2/meow_launcherd" "$SDK_DIR/test_host_stub.c" -o "$OUT/host/sdk_stub.o" || exit 1
echo "==> host app sources (exclude app.c: has main + g_st; test provides them)"
APP_SRC="app/ui/login.c app/ui/home.c app/ui/playlist.c app/ui/player.c \
app/ui/settings.c app/ui/search.c app/ui/minibar.c app/ui/queue.c app/ui/cache.c \
app/ui/ncm_colors.c app/ui/chrome.c \
app/logic/appstate.c app/logic/lyric.c app/logic/songmeta.c \
app/logic/cover.c app/logic/account.c app/logic/retry_ctl.c \
app/play/player_manager.c app/play/audio_out.c app/play/mem_watch.c \
app/play/ipc_media.c app/play/meta_gate.c app/play/decoder.c app/play/stream_src.c \
app/play/minimp3_impl.c"
for f in $APP_SRC; do
b=$(basename "$f" .c)
$CC_HOST -O2 -c -DMEOW_UI_HOST_TEST -DJSMN_HEADER $INC "$f" -o "$OUT/host/$b.o" || { echo "app $f FAILED"; exit 1; }
done
# dr_flac 实现 TU:vendor 豁免告警(同 minimp3 口径),放 strict 循环外
$CC_HOST -O2 -c -Ivendor/dr_flac app/play/dr_flac_impl.c -o "$OUT/host/dr_flac_impl.o" || { echo "dr_flac_impl FAILED"; exit 1; }
$CC_HOST -O2 -c -DMEOW_UI_HOST_TEST -DJSMN_HEADER $INC app/test/test_ncm_app.c -o "$OUT/host/app_test.o" || exit 1
echo "==> link ncm_host"
$CC_HOST -O2 -o ncm_host \
"$OUT/host"/*.o \
out/core-host/*.o \
-L"$MBED" -lmbedtls -lmbedx509 -lmbedcrypto \
-lz -lpthread -lm
ls -la ncm_host
file ncm_host
echo "run: NCM_PAGE=home MEOW_UI_DUMP=/tmp/home.ppm ./ncm_host"