Update System - 更新系统
更新系统提供应用内更新功能,使 MagicWord 能够直接向用户分发新版本,无需通过应用商店。这对于网络受限区域的用户至关重要。
架构概览
更新系统实现了一个三层架构:
- 无服务器分发: GitHub Releases 作为分发平台。
- 代理访问: 所有 API 调用通过 Cloudflare Worker 路由。
- 权限安全安装: 自动处理 Android 8.0+ 的未知来源权限。
核心组件
UpdateManager 单例
集中处理所有更新操作。
- PROXY_BASE_URL:
https://mag.upxuu.com - LATEST_RELEASE_URL: 指向 Cloudflare 代理的 API 端点。
更新检测流程
- 检查更新:
MainScreen启动时调用checkUpdate()。 - 版本比较: 语义化版本比较 (Semantic Versioning)。
- 移除 "v" 前缀。
- 按 "." 分割并比较数字部分。
- 下载 URL: 构建指向代理的 URL (
/MagicWordLatest.apk),而不是 GitHub 直接链接。
APK 下载与安装
- 下载: 使用 OkHttp 流式下载,支持进度跟踪。
- 安装 (Android 8.0+):
- 检查
canRequestPackageInstalls()。 - 如果被拒绝,引导用户去设置。
- 使用
FileProvider安全地暴露 APK 文件。
- 检查
UI 集成
- MainScreen: 启动时自动检查,显示更新对话框。
- SettingsScreen: 手动检查更新。
- 对话框: 显示版本号、发布说明、进度条。
错误处理
- 网络故障:
checkUpdate返回 null,静默失败。 - 权限拒绝: 用户取消权限授权时,需要手动重试。
- 跳过版本: 用户可以选择跳过特定版本,版本号持久化到 SharedPreferences。