重新部署与中州鹅发行标识
日期:2026-10-20。对应 PR #4 的第六项功能交付,另在功能分支同步默认分支新增修复;不写入默认分支、不合并 PR。
部署重载
原来的重新部署确实调用了 start_maintenance(true) 并销毁会话;按钮没有消失不能单独证明它没有执行。 但仅销毁会话不能清除 Lua require() 的模块缓存,已加载脚本可能继续使用旧内容。 此外,强制维护在启动线程前失败时会返回 false,旧代码只依赖部署通知,可能漏报这类失败。
现在显式部署先结束旧会话并清空候选/预编辑/状态动作,再执行 finalize → initialize → start_maintenance(true) → join → 读取方案列表 → 新会话。 finalize 释放组件和 Lua 运行环境,并关闭、持久化用户数据库。 完整部署仅失效 build/ 中有对应源文件的生成 YAML,保留原始配置、词典/模型二进制、无源预编译方案与所有用户库、同步记录。 这也处理复制文件保留原修改时间的情况:上游配置编译器只比较秒级 mtime,full_check=true 本身不强制重编译这些 YAML。 初始化 glog 的 setup 仍只执行一次。目录切换直接完整初始化,不重复进行增量与完整部署。 部署入口使用互斥锁串行执行,期间拦截按键并显示忙碌提示,成功后恢复当前可用方案与状态区。 强制维护返回 false 或发出 failure 都视为失败;修改文件后可再次部署恢复。 日常唤起键盘仍按原有规则复用普通文本会话,不在输入热路径增加初始化。
新增设备回归 redeployReloadsLuaAndSchema:先加载 Lua 以填充缓存,修改模块顶层常量、方案名、开关和 schema_list,分别经设置部署与状态区部署,验证实际候选注释、可选方案、开关、中文提交和无重复提交。 同一个 Lua 过滤器同时验证发行代号和 APK 版本,避免只检查 UI 文案或 ELF 中的字符串。 回归还刻意保持 YAML 修改时间不变,确保显式部署实际刷新内容;原生契约检查启动保留缓存、部署仅失效生成 YAML, 并验证用户库、词典二进制、无源预编译配置及符号链接目标均保留。 原生契约还覆盖完整卸载/初始化次数、setup 仅一次、维护线程未启动的失败及失败后的再次部署。
包名与统计名称
主应用恢复为默认分支实际包名 org.fcitx.fcitx5.android.fx.rime,Java/JNI 的命名空间不变。 签名相同时可覆盖原包名旧版;旧测试包 io.github.sandyyur.rime.direct 的数据不会自动跨包搬移, 先备份、恢复并检查后再卸载测试包。详细步骤见用户手册。 最小诊断应用使用独立的 .lab 包名,避免与主应用互相覆盖。
万象的 input_statistics.lua 读取 rime_api.get_distribution_code_name() 和 get_distribution_version()。现将 distribution_code_name 与 distribution_name 设为 UTF-8 中文“中州鹅”, 版本通过 JNI 从当前 APK 的实际版本传入,不再固定为 direct-rime 0.1。 这不是新增或重命名输入方案;万象、空格键方案标签及技术库名不因发行名称变化而更改。
关于页与交付
手册、维护说明和源码链接固定到构建提交,避免开发分支删除后失效,也避免指向与安装包不符的新版说明。 “版本与更新”连接本仓库 Releases。10 月 21 日恢复默认分支的应用内更新器入口: 点击“版本与更新”或“当前版本”可检查、下载并安装更新,关于页恢复新版本提示;保留原有镜像和 hosts 设置。 Nightly 使用“中州鹅”标题;合并前测试包见 PR 的成功 Commit CI。 旧性能证据保留当时的包名和源码,不重写成新版本结果。 现行设备脚本改用新包名;历史回放可通过 --package 或 --direct-package 选择旧测试包。
验证状态、准确提交、CI 运行、签名 APK 下载与哈希由 PR #4 当前描述记录。设备测试不代替用户手机上万象的最终复测。
同步默认分支
检查 PR 时默认分支已经增加 53038c22(低版本换主题修复)和 69fa5a9b(MD3 设置与首次引导)。 在本功能分支同步这两个提交,保留设置配色、页面动画与返回手势,不改变默认分支。 冲突处理保留本版手册/源码链接和“重启输入引擎”文案,采用 Material 设置对话框; 继续删除没有调用方的旧引擎/输入法列表和旧布局选择对话框,并去除新设置标题映射中的旧类引用。 密码框菜单仍使用已修复的 IME 非焦点窗口,不把设置对话框的焦点行为套用到键盘菜单。 AndroidX Fragment 1.8.9 是此次默认分支的实际预测返回依赖,继续保留并纳入最终打包验证。
首轮整合设备检查 39488795374 捕获三项失败,没有将该轮标为通过: 部署用例暴露秒级 mtime 导致配置未重编译;全局启用预测返回后,Back 绕过旧按键分发而隐藏键盘; 布局控件测试仍使用系统 Material 主题,缺少新 MD3 颜色属性。 对应修复为上述生成配置失效、菜单期间在 IME 窗口注册 API 33+ 返回回调并在关闭后注销、 以及测试使用实际设置页主题。密码菜单回归继续检查 Back 关闭菜单后键盘保持,另检查无菜单时 Back 正常隐藏键盘。