文件: 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>: <你的理由>,下次审查会自动关闭。
文件: 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):'',匹配规则(models/app_version.dart 中 apkAssetFor 对空 segment 的行为)大概率无法匹配app-arm64-v8a-release.apk之类的文件名 →asset == null→ 返回AppUpdateUpToDate()(91-97 行)。影响: 该设备用户被静默困在旧版本,更新通道永久失效,用户也不会得到"当前设备不支持自动更新"的明确提示(被误报为"已是最新版本")。
修复建议:
AppUpdateCheckFailed('当前设备架构不支持自动更新,请到 GitHub Releases 手动下载'),与 UpToDate 区分;忽略指南:在
lib/services/app_update_service.dart:96添加注释// cr-ignore <CR_IGNORE_IID_HASH>: <你的理由>,下次审查会自动关闭。