Skip to content

启幕 v2.0.1(修复安卓端目标串味与循环设置)

Choose a tag to compare

@Baimacao Baimacao released this 12 Oct 10:34
· 1 commit to main since this release

启幕 v2.0.1

修复两个安卓端缺陷。PC 端无改动。


1. 选关机动画后,二级功能仍是开机动画相关

现象:主界面切到「关机动画」后,制作卡片、安装卡片、按钮文字、文件选择器标题仍写着"开机动画 / bootanimation.zip"。
更严重的是:备份也串了。

根因(实测):这些字符串是硬编码写死的,共 8 处,完全没有跟随当前选中的目标:

位置 原内容
制作卡片标题与说明 "制作开机动画"、"做成 bootanimation.zip"
安装卡片标题与说明 "安装开机动画"、"选一个 bootanimation.zip"
按钮文字(3 处) "选择 bootanimation.zip"
文件选择器标题 "选择 bootanimation.zip"
落盘暂存文件名 bootanimation.zip

修法:新增集中的 refreshTargetText(),所有目标相关文案改成由 AnimTarget.label() / AnimTarget.fileName() 动态生成;
切换目标时就地改写,不再重建界面。今后新增文案也走这里,避免再次写死。

顺带修掉一个更危险的问题:备份互相覆盖

BackupManager 原先把开机与关机的备份放在同一个目录,且共用同一个 origin-first.zip。
后果是:关机动画的"首次备份"会覆盖掉开机动画的"首次备份" —— 一旦开机动画被替换,就再也回不到出厂状态。

同时 rotate() 只清理 bootanimation- 前缀,关机备份永远不会被轮转删除(无限增长);
list() 也不过过滤,会把关机的备份列给开机。

修法:备份目录按目标分开(backup/boot/ 与 backup/shutdown/),文件名前缀跟随目标,
list() / rotate() 都接收 target。两者彻底隔离。


2. 安卓端无法设置循环部分

现象:安卓端只能"整段无限循环",改不了播放次数,也没有段间暂停。

根因(实测):CreatorActivity 只设置了 o.partType,从未设置 o.parts ——
而循环次数正是通过 Creator.Options.parts 传入的。底层 Creator.plan() 一直支持次数与暂停,只是 UI 从未暴露。

修法:新增「3b · 循环部分」卡片:

  • 预设按钮:无限循环 / 播 1 遍 / 播 2 遍 / 播 3 遍
  • 「自定义次数与段间暂停」:可填任意次数(0 = 无限循环)与暂停帧数
  • 实时显示「一遍 N 帧」「共约 M 帧(X 秒)」的预估

切换目标时自动给合理默认:开机 → 无限循环;关机 → 播 1 遍(配合"必须播完"类型,避免还没播完就断电)。

顺带发现并修复:Creator 写 desc.txt 时暂停字段被写死成 0,现已接上真实值。
暂停单位是帧不是秒(AOSP desc.txt 规范如此),UI 里有说明。


验证情况

套件 结果
PC 后端端到端 109 / 109
PC 界面全流程 58 / 58
PC 动效 15 / 15
安卓 APK 静态 105 / 105(新增 17 项"目标感知"断言)
安卓包解析逻辑 31 / 31
安卓制作核心 63 / 63(新增 7 项循环断言)

断言总计 381 项,0 失败。

新增的断言专门防回归:

  • MainActivity 代码中不得再出现硬编码的 "选择 bootanimation.zip" / "制作开机动画" / 落盘名
  • 必须存在 refreshTargetText() 且在切换后调用
  • BackupManager 必须按目标分目录、文件名前缀跟随目标、backup/list 必须接收 target
  • CreatorActivity 必须设置 o.parts(原先完全没设就是本缺陷的根因)
  • desc.txt 必须写出真实 pause 而非写死 0

⚠ 未能验证

本机无 adb、无真机,安卓端实际显示与交互效果未经肉眼确认。已验证的是:编译通过、静态断言通过、循环逻辑在 PC 上真跑(p 3 15 part0 正确写出)。


下载

文件 说明
BootAnimForge-2.0.1-portable.zip PC 端(Node + ffmpeg)+ 安卓端 APK
BootAnimForge-Android-2.0.1-debug.apk 只要安卓端

从 v2.0.0 升级

安卓端用同一调试密钥签名,可直接覆盖安装。已存在的备份不会丢失(旧备份在 backup/ 根下,新备份进 backup/boot/ 与 backup/shutdown/;旧的那份仍可用文件管理器手动取用)。