简体中文
SDK 概念
跨语言进阶说明。语言细节在各语言页。
范围
封装原生客户端 JSON:检查、下载、校验、可选差量/打包、可选替换。
明确不做:管理平面 SDK;Sparkle/WinGet/electron-updater/Play/App Store;OpenAPI 生成客户端;浏览器与 Deno(TypeScript 无 browser export)。
默认流程
- 调用方传入身份参数(含稳定
device_id)。SDK 不编身份、不把明文设备编号写入日志。 - 可选设备报到。
- POST 检查更新(默认能力只有整包)。
- 可选更新说明(check 响应不含正文)。
- 下载
/packages/{sha256}(保留exp/sig,支持 Range)。 - SHA-256;若有
signature则按检查载荷验签。 - 有 Replacer 才安装,否则返回已校验暂存路径。
检查与 HTTP
检查更新是 POST;GET 同路径 404。204 无更新、304 ETag 命中,都不是失败。错误看 { "error": { "code", "message", "details" } }。
能力位
只申报已经接上、真能用的适配器:full_package / file_list / patch_package / binary_delta(加 accepted_delta_algos)。未注入差量应用器时禁止报 binary_delta。local_sha256 只出现在差量请求。
适配器
HTTP、文件、哈希、zip、验签可注入。JSON 不是适配器(Java Jackson、Kotlin kotlinx.serialization、Rust serde_json、C cJSON、C++ nlohmann/json 等写死)。不要再叠第二套 HTTP/JSON 库(axios、OkHttp、Guzzle、Gson、RapidJSON 等)。差量 apply 与占用文件/APK 没有默认实现:只留 Patcher / Replacer(Go 可另提供可选纯 Go Patcher)。
差量 magic
不得交叉解码:KVDIFFHP1、HDIFF13&、BSDIFF40、VCDIFF D6 C3 C4。未知 magic 回退整包。见 FAQ · 差量。
Docker
SDK 包、安装步骤、调用方应用都不依赖 Docker。契约测试注入假 Transport。Swift swift test 需要 Apple 工具链。
明确不做
管理平面 SDK;商店 feed 客户端;OpenAPI Generator / hey-api 生成客户端;浏览器 / Deno 更新器;把本服务器仓库的 main 当作 Go/PHP/Swift 包根。