Skip to content

未知 CPU 架构设备被静默判定"已是最新",更新通道永久失效且无提示 #45

Description

@yunkst

文件: lib/utils/device_arch.dart:64-68 与 lib/services/app_update_service.dart:89-97

问题: DeviceArchDetector.getCurrent() 在无法识别 ABI(DeviceArch.unknown,apkNameSegment 为空字符串)时仅打日志"将使用通用 APK"。但 AppUpdateService.checkForUpdateDetailed() 随后调用 release.apkAssetFor(archSegment)

  • 对 unknown 设备,archSegment 是 '',匹配规则(models/app_version.dart 中 apkAssetFor 对空 segment 的行为)大概率无法匹配 app-arm64-v8a-release.apk 之类的文件名 → asset == null → 返回 AppUpdateUpToDate()(91-97 行)。
  • 结果:非标准 ABI 设备(如 x86_64 ChromeOS 之外的平板、RISC-V、未来新 ABI、或者 device_info_plus 返回异常列表)永远收不到任何更新,且日志显示"使用通用 APK"暗示有兜底,实际根本没有通用 APK asset(release workflow 只产 3 个分架构 APK,无 universal APK)。

影响: 该设备用户被静默困在旧版本,更新通道永久失效,用户也不会得到"当前设备不支持自动更新"的明确提示(被误报为"已是最新版本")。

修复建议:

  • unknown 架构时返回 AppUpdateCheckFailed('当前设备架构不支持自动更新,请到 GitHub Releases 手动下载'),与 UpToDate 区分;
  • 或 unknown 时 fallback 匹配 universal APK(如果未来 release workflow 加产 universal APK,文件名通常不含架构段)。

忽略指南:在 lib/services/app_update_service.dart:96 添加注释 // cr-ignore <CR_IGNORE_IID_HASH>: <你的理由>,下次审查会自动关闭。

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions