Repository navigation
启幕 v2.0.1(修复安卓端目标串味与循环设置)
启幕 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必须接收 targetCreatorActivity必须设置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/;旧的那份仍可用文件管理器手动取用)。