GeneralUpdate.Avalonia.Android
命名空间: GeneralUpdate.Avalonia.Android | 主要入口: GeneralUpdateBootstrap.CreateDefault() | NuGet 包: GeneralUpdate.Avalonia.Android
1. 组件简介
1.1 组件概述
GeneralUpdate.Avalonia.Android 是面向 Avalonia 应用的 Android 平台自动更新组件,专为 Android APK 的更新场景设计。它提供版本对比、可断点续传的 APK 下载、SHA256 完整性校验、以及 Android Package Installer 自动启动的全流程编排能力。
Android 平台的更新与桌面应用不同:APK 安装必须通过 Android 系统安装器完成,下载过程可能被用户中断或切换网络,安装前需要检查 "安装未知应用" 权限。该组件封装了这些平台差异,让 Avalonia 开发者只需提供更新包信息即可完成更新。
核心能力:
| 能力 | 说明 |
|---|---|
| 版本对比 | 内置 SystemVersionComparer,通过 IVersionComparer 接口支持自定义版本策略 |
| 断点续传下载 | HttpResumableApkDownloader 支持 HTTP Range 请求头,中断后可续传 |
| SHA256 完整性校验 | 下载完成后自动计算文件 SHA256,与服务端声明的哈希值比对,防止文件损坏或篡改 |
| APK 安装编排 | 通过 AndroidApkInstaller 调用系统 Package Installer,自动处理 FileProvider URI |
| HTTP 传输配置 | HttpDownloadOptions 支持 SSL/TLS 证书策略、代理、超时、重试和多种认证方案 |
| 多协议认证 | 支持 HMAC-SHA256、Bearer Token、API Key、HTTP Basic 四种认证方案,支持全局和单包粒度 |
| 事件通知 | 版本发现、下载进度、完成、失败等事件通知 |
| 状态快照 | GetSnapshot() 随时获取当前更新状态、失败原因和消息 |
| UI 线程调度 | IUpdateEventDispatcher 支持将事件调度到 UI 线程(如 Avalonia 的 SynchronizationContext) |
| 渐进式下载 | 临时文件 .part 和 Sidecar .json 机制,记录已完成字节数,支持进程级断点续传 |
解决的业务痛点:
- Avalonia 应用发布 Android 版本后,需要可靠的内置更新能力,但 Android APK 安装必须经由系统安装器
- 下载大 APK 包时可能被用户中断、网络切换,需要断点续传能力降低重复下载流量
- 需要对下载的 APK 进行完整性校验,防止传输损坏或被篡改
- 需要灵活的认证方案对接不同服务端的鉴权要求
Android 更新 ≠ 桌面文件替换
Android 平台不能像桌面端那样直接替换文件。APK 必须通过 Android Package Installer 安装,系统会处理签名验证、权限授予和应用替换。本组件封装了这些平台差异,但 APK 签名、版本号递增等仍需要你在构建流水线中保证。
业务使用场景:
- Avalonia 跨平台应用的 Android APK 自动更新
- 企业内部 Android 应用的静默或引导式更新
- 需要通过 CDN / OSS 分发 APK 包的场景
1.2 环境与依赖
| 项目 | 说明 |
|---|---|
| NuGet 包 | GeneralUpdate.Avalonia.Android |
| 目标框架 | net10.0-android(最低 Android API 26+) |
| 依赖包 | Xamarin.AndroidX.Core(FileProvider 支持) |
| 兼容性 | Android 8.0 (API 26) 及以上版本 |
2. 组件功能列表
| 功能名称 | 功能描述 | 类型 | 是否必填 | 备注限制 |
|---|---|---|---|---|
| 版本对比检查 |