Skip to content

支持在 ValidateAsync 前查询更新包元数据 - #17

Closed
JusterZhu with Copilot wants to merge 3 commits into
mainfrom
copilot/feature-get-update-package-info
Closed

JusterZhu with Copilot wants to merge 3 commits into
mainfrom
copilot/feature-get-update-package-info

Conversation

Copilot AI commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

现有 ValidateAsync 依赖调用方提供 UpdatePackageInfo,无法主动查询服务器。本次增加独立查询入口,支持先获取包信息再决定是否更新,并修复下载到校验阶段的文件生命周期问题。

  • 元数据查询

    • 新增 HttpUpdatePackageClient.GetPackageInfoAsync:支持 GET 标准 JSON,以及 POST GeneralUpdate 参考验证协议。
    • POST 返回最新的非冻结完整 APK,排除差分包、ZIP 和驱动包。
    • 复用认证接口,支持取消;区分无包结果与请求、协议及元数据错误。
  • 更新链路

    • 下载流关闭后再移动文件,确保后续校验读取完整内容。
    • 查询不触发更新事件,不改变原有手动传入元数据的调用方式。
  • 接入说明

    • 补充中英文示例及协议约束;GeneralSpacestation 实际部署的接口和 Android 平台编号需核对。
var client = new HttpUpdatePackageClient(httpClient);
var package = await client.GetPackageInfoAsync(metadataUrl, ct);
if (package is null) return;

// 可先查看包信息,再进入现有更新流程。
var check = await bootstrap.ValidateAsync(package, currentVersion, ct);

…izing

Co-authored-by: JusterZhu <11714536+JusterZhu@users.noreply.github.com>
Copilot AI changed the title [WIP] Add method to retrieve update package information before ValidateAsync 支持在 ValidateAsync 前查询更新包元数据 Sep 19, 2026
Copilot AI requested a review from JusterZhu September 19, 2026 13:42
@JusterZhu

Copy link
Copy Markdown
Contributor

@copilot HttpUpdatePackageClient相关的写法思路是错误的,所有的请求组件内部就实现了不需要使用者显式调用,在请求版本校验的时候应该触发AddListenerUpdatePrecheck在回调中给出最新版本相关信息,然后让用户决定返回值是否更新。这一块的思路可以参考GeneralUpdate的相关实现。

Co-authored-by: JusterZhu <11714536+JusterZhu@users.noreply.github.com>

Copilot AI commented Sep 19, 2026

Copy link
Copy Markdown
Contributor Author

@copilot HttpUpdatePackageClient相关的写法思路是错误的,所有的请求组件内部就实现了不需要使用者显式调用,在请求版本校验的时候应该触发AddListenerUpdateP...

已在 cbfb17d 调整:配置 AndroidUpdateOptions.UpdateServer 后,直接调用 ValidateAsync(currentVersion),组件内部完成服务器请求和版本比较,再通过 AddListenerUpdatePrecheck 提供最新 PackageInfo。HttpUpdatePackageClient 已收为内部实现,无需使用者显式调用。

已参照 GeneralUpdate 的实际 CanSkip 实现保留语义:true 跳过、false 继续,强制更新绕过回调。请求失败统一通过结果和失败事件通知,文档已同步修改。47 项测试通过(包含真实本地 HTTP 请求及回调顺序验证),CodeQL 无告警;Android 构建受环境缺少工作负载限制。

@JusterZhu JusterZhu closed this Sep 19, 2026
@JusterZhu
JusterZhu deleted the copilot/feature-get-update-package-info branch September 19, 2026 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: 在ValidateAsync之前,我需要获取UpdatePackageInfo的信息

2 participants