同一套编辑器在开发服务器里运行正常,进入 Android 安装包后却可能出现三种看似无关的故障:模板卡片能显示但点击报错,登录对话框正常但 Logo 加载失败,Web 页面已经改好而原生启动页仍然变形。海豹办公 1.9.15 的移动端追加修复,正好涉及这些边界。
海豹办公(Seal Office)是一个免费开源的办公软件,包含文字、表格、演示文稿和 PDF 页面工具,提供 Windows、Ubuntu、Android 与 HarmonyOS 软件包。本文从实际修复出发,介绍跨端服务装配、本地资源路径、模板加载与安装包验收的经验,同时说明本次版本可使用的功能范围。
共用编辑器的架构与边界
桌面端通过 IPC 拆分文件、Office、PDF、系统和模型服务,渲染层通过统一桥接调用。移动端使用 uni-app x 的 UTS 外壳,在 WebView 中加载安装包内的本地编辑器,并在平台桥接层适配原生能力。
复用编辑器可以减少重复 UI,但不会消除平台差异。文件访问、原生回调、网络请求、系统返回键和生命周期仍需要独立处理。Windows Access Runtime / ACE 这样的引擎依赖,也不会因为共享了数据库界面而自动出现在手机上。
因此,跨端测试需要同时关注编辑器、桥接层、原生资源和最终安装包。只测试其中一层,往往会得到"我这里可以"的局部结论。
问题一 模板卡片正常但创建副本失败
本次移动端曾在点击演示模板后出现"恢复 is not a function"。它并不是模板标题或按钮文案的问题,而是后续资源操作拿到了错误的依赖对象。
在演示通道的注册函数中,第二个参数是演示资源存储,第三个参数才是识别、录制等服务依赖。移动桥接层将依赖对象传到了错误位置,导致恢复资源和读取图片时调用到不符合资源存储契约的对象。
修复后的项目调用如下,位于 mobile/web/bridge.ts:
ts
core.presentation.注册演示通道(ipcMain, undefined, {
识别服务: core.recognition.创建识别服务({ 助手服务: assistant }),
录制服务: recording
})
关键点不是给某一个缺失方法补空实现,而是恢复正确的依赖职责。否则预览看似不报错,创建副本、图片读取或保存仍可能在下一步失败。多个可选对象参数尤其容易混淆,后续接口设计可以考虑具名配置与更严格的类型表达。
回归用例也要沿完整用户路径设计:进入市场,点击模板,查看多页预览,读取图片,创建可编辑副本,进入编辑工作区,再保存与重新打开。不能把"列表出现了"当成"模板能力正常"。

图1:Android 模板多页预览实图,可继续创建编辑副本。
问题二 开发环境正常但登录 Logo 丢失
登录 Logo 的问题出现在生产资源 URL 解析中。本地脚本二次合并后,图片 URL 丢失了 assets 目录的正确基准。开发服务器可以兜底处理某些路径,而安装包内的 file:// 资源没有相同语义。
排查这类问题时,需要分别确认构建产物实际位置、运行时基准 URL、拼接结果和文件是否存在。更重要的是,使用生产 IIFE 与真实本地页面运行,而不是只刷新开发服务器。
图片测试不能只检查 HTML 中存在 img 标签,还应检查浏览器是否完成真实解码,以及最终图片尺寸是否大于零。元素存在、请求发出、资源成功解码,是三个不同阶段。
这次修复后新增了直接运行生产本地资源、真实 IPC 资源操作与登录图片解码的回归检查,目的是让测试环境更接近安装包的运行方式。

图2:登录页实图,Logo 来自安装包内的本地资源,截图未填写个人信息。
问题三 原生启动图与 Web 页面不是同一层
启动页 Logo 过大、出现重复标识,不能只靠修改网页中的图片宽高解决,因为用户首先看到的可能是原生启动资源。
1.9.15 Android 改用三种密度的专用留白启动图,将可见 Logo 控制在约 96dp,并移除底部重复和拉伸的品牌图。检查重点是"可见图形占多少",而不是只看整张 PNG 的像素尺寸。
对移动应用,建议把资源验收拆成三步:源图片的留白和比例正确,密度目录的配置正确,最终 APK 里确实打进了新文件。最后一步很容易被忽略,尤其是在同一版本号内多次云打包时。
WebView 原生回调需要回到 UI 线程
前一轮修复处理了原生网络回调在后台线程调用 WebView 的问题,统一在 UI 线程执行脚本与分享操作。局部子资源失败也不再直接把整个本地工作台替换为错误页面。
这两类问题表面上都是"页面打不开",处理方向却不同:一个是线程调用边界,另一个是错误传播范围。诊断时应先区分主页面失败、子资源失败、JavaScript 异常与原生进程退出,避免用同一条重试提示掩盖全部原因。
Android 返回键也按层级分派:弹窗与功能面板先关闭,云空间子目录先返回上级,其他模块先返回首页;首页一级页面再按返回键才回到桌面,保留工作区并触发备份。这样既尊重系统导航习惯,也避免把普通返回操作当成销毁进程。
模板市场为什么只先加载封面
海豹办公内置 300 套原创可编辑 PPT 模板,按 30 个主题、每个主题 10 种风格组织,每套为 9 页结构。如果移动列表一进入就构建全部幻灯片,内存、图片与布局成本会叠加。
当前手机端按封面和分页浏览,每页 8 套,用户打开具体模板后再进入多页预览。这里没有宣称某个具体性能提升百分比,因为优化效果需要在目标设备上测量;可以明确的是,列表阶段不再主动承担所有页面的构建成本。
对类似资源市场,测试除了覆盖单张卡片,还应覆盖快速切页、重复进入预览、关闭后重新打开,以及进入编辑副本后的资源释放与状态恢复。
1.9.15 的其他产品变化
本次桌面与移动界面统一提供简体中文与 English 切换,选择在重启后保留,但不会翻译用户文档。云空间调整为网盘式文件浏览器,包含目录面包屑、搜索、网格与列表切换、排序、批量操作、历史版本和回收站。
Windows 新增 Access 数据库工作区,面向 Access 2003 MDB 与 Access 2007 至当前版本 ACCDB,支持结构查看、数据增删改查、SQL 和 CSV 导入导出。它需要兼容的 ACE 引擎,不执行 Access 窗体、报表、VBA、宏、ActiveX 或 OLE。
演示全屏放映修复了画笔遮挡其他工具操作与单点笔迹保存问题,工具栏在 2 秒无操作后贴边隐藏,鼠标靠近边缘唤出。文字、表格、演示和 PDF 仍以基础办公任务为起点,不承诺所有 Office 对象无损兼容。
如何建立发布前的最小验收闭环
对于这类跨端软件,可以把发布检查按以下顺序组织:先验证源码行为,再运行生产构建资源,之后核对包内文件、版本和签名,最后在目标设备执行安装、启动、导入导出与生命周期测试。
每个阶段回答的问题不同。源码测试通过不代表打包资源没有漏;签名正确不代表模板可以使用;模拟器正常也不能代替目标真机对字体、系统返回键、内存和系统 WebView 的验证。
本轮公开移动包已核对内置编辑器、版本和发布签名,并补充生产本地资源回归。目标真机验收仍应单独完成。Android 最低支持 Android 9,HarmonyOS 发布附件是包含正式签名 .app 的 ZIP;存在正式包并不代表已经通过应用市场审核。当前没有公开 iOS IPA。
源码与下载
基础文档编辑和本地保存无需账号。云空间属于可选网络服务;智能助手由用户自行配置模型地址与密钥,不包含免费额度,主动调用时会向对应服务商发送完成请求所需的内容。
项目使用 MIT 许可证,依赖与第三方服务遵循各自条款。反馈问题时请附系统与软件版本、稳定复现步骤和脱敏最小文件,不要上传客户资料、模型密钥或数据库口令。
本文为项目技术分享,使用 AI 辅助整理文字,功能范围以 1.9.15 源码、说明与对应安装包为准。