Skip to content

Android:应用内更新无法打开 APK 安装器,且凭据信封读失败被误报成未配置火山 ASR #1054

Description

@HKLHaoBin

现象

来自用户日志 openless-2026-09-10T11-41-25.log

  1. 听写失败[vault] android credential read failed: read Android credential envelope 之后,门禁报「请先在设置中填写火山引擎 ASR App Key」。当天稍早百炼 ASR 是正常的。
  2. 应用内更新失败:已发现 v1.3.18-Beta.7,安装时报 parse updater pubkey: Invalid encoding in minisign data,系统安装器从未打开。

根因

  • Android 更新器用 PublicKey::from_base64 解析 tauri.conf.json 里那份 再 Base64 包装过的 minisign 公钥文件(约 114 字节文本)。该 API 只要 42 字节密钥行,因此验签在写 APK / 调 installApk 之前就失败。桌面 tauri-plugin-updater 是先解 Base64 再 PublicKey::decode
  • 凭据信封读取失败时只打外层 {e},并回落到空配置。非 Windows 默认 ASR 是 volcengine,于是把「Keystore/信封读不出来」伪装成「没填火山 Key」。

修复分支

彻底修复测试之前先不开 PR。代码在 fork:https://github.com/HKLHaoBin/openless/tree/fix/android-updater-minisign-and-vault-error

  • 对齐桌面 Tauri 的 minisign 解析(pubkey + signature,verify(..., true)
  • 记录完整 anyhow 链 {e:#},去重日志;SystemCredentialStore 在 vault 不可读时返回 Persistence「无法读取已保存的凭据」,而不是空 Key / 未配置火山

验证

  • 本地:cargo test --lib updater_logicandroid_startup_failurenode scripts/check-android-updater-pubkey.mjs
  • 将在 HKLHaoBin/openless 对该分支 workflow_dispatch:CI、Android APK (debug)、Release Tauri、Release Linux egui

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions