真机 1280x2275 单页解码 392ms,首次看某页有一瞬加载感。改成: - 大页(JPEG ≥1MP)先按显示长边一半的档位(真机页=step 4)解一版低档, 精确落到显示框后立刻上屏(换图仍是单次原生 blit,不闪白、不重置缩放/滚动); - 停稳 200ms 后才解目标档位(step 2),在**同一槽**原地替换低档,低档随即释放, 常驻不翻倍;高档失败/预算跳过时保留低档,不把整页标成「内存不足」; - 拖动/连翻/条漫滚动/跳页在途期间只解低档;高档请求复用 M22 的 gen/窗口 stale 判据作废(只多一条 sharpen 谓词),出队前/后两条路径都计入取消; - 日志尾部新增 tier=low|high(取消行同),真机可直接核对先糊后清。 分档只给 JPEG:step 是 JPEG 缩解概念,PNG/BMP 后端按目标逐行丢行本来就不慢, 且峰值模型对非 JPEG 按「输出=显示框」建模,多一条小图→落框路径会让模型低估 (不新增解码路径,也不改 sdk/ 与 page_source 的唯一模型)。 宿主回归: - test_reader_membudget B10:JPEG 低档先落位(open 不阻塞)→ 高档落同槽 (槽内字节不变、槽位全程不空)→ 拖动中强塞的高档请求被取消且不被解码; - B8 连翻 100 页(6 类 1.3–12MP 循环)峰值增量 2714KB ≤3MB、常驻 ≤3MB, 低档/高档都确实跑过;B3 断言小页保持单档(不付两次解码); - test_reader_perf P11:非 JPEG 大页不分档,仍是一次原生 blit。
tuku(os.meow.picbrowser)打包与签名
图库 App(系统包名 os.meow.picbrowser)。构建与打包:
./build_tuku.sh # 交叉编译 picbrowser(MIPS32r2 静态)
./pack_tuku.sh # 打包 → os.meow.picbrowser.mpk(根布局;未签名)
浏览交互(文件管理器模型,M18)
- 列表 = 当前目录一层的子目录 + 受支持图片(png/jpg/jpeg/bmp)+ 档案册(.cbz/.zip);
目录优先,组内自然序(大小写不敏感,同键按原始字节兜底,
A.jpg/a.jpg不抖动)。 - 点目录 = 进入(空目录也进);点图片 = 从该图开始读(按文件名交给阅读器,
由阅读器的全量目录册定位起始页——列表被
MR_LIB_SCAN_MAX截断时也不会点错图); 点档案册 = 打开档案册(第 1 页/续读)。 - 单目录超过 2000 项时列表只显示前 2000 项并给出「已截断」提示行;图片仍可进入阅读器翻到。
- 缩略图功能已关闭:行内只有类型图标 + 文件名 + 类型·大小;首帧只做单层
opendir/readdir + lstat,滚动/点击路径不解码、不访问文件、不重排字符串。 - 浏览根锁定 TF 卡根(
/usr/data/mnt/sd_0):根目录不显示返回箭头,左缘返回 = 退出 App; 不允许上溯到 SD 卡的上级目录。 - 根目录不可访问(未插卡/挂载失败)→ 友好空态「未检测到 SD 卡」;点顶栏刷新或重进页面即重扫, 不弹错、不崩溃。
一键签名出包
MEOW_SIGN_KEY=/path/to/signing.key ./pack_tuku.sh
- 工具查找顺序:
$MEOW_SIGN→PATH里的meow_sign→$HOME/Proj/MeowOS-For-R3P2/patch_v2/meow_sign/meow_sign。 - 私钥:
$MEOW_SIGN_KEY。未设置时脚本警告并仍产出未签名包(退出码 0);但os.meow.*系统包无签名会被设备拒装。 - 有工具 + 密钥时执行
meow_sign sign <mpk> <key>;若存在<key>.pub再执行meow_sign verify <mpk> <key>.pub。 - 私钥不入库、不随包分发;本仓不包含任何密钥材料。
mpk 布局
.mpk = tar.gz,条目直接在根层:
os.meow.picbrowser.mpk
├── app.json
├── picbrowser
└── <signature footer> # 仅签名包有(Ed25519,尾部追加)
即 tar -C build/os.meow.picbrowser -czf os.meow.picbrowser.mpk app.json picbrowser——
不带 os.meow.picbrowser/ 目录前缀,也不带 ./ 前缀。脚本在签名前用 tar -tzf 断言这一点。
签名是往 tar.gz 尾部追加 footer,签名后的 mpk 不要再跑 tar -t / gzip 之类的命令:
gzip 会报 trailing garbage ignored,属预期现象,不是包损坏。要检查布局请在签名前做。
安装
把 .mpk 放到设备 TF 卡,执行 nyai install os.meow.picbrowser.mpk;
os.meow.* 包必须验签通过(footer.package == 文件名茎 == app.json.package)。