53 行
1.5 KiB
Markdown
53 行
1.5 KiB
Markdown
# sdk-update
|
|
|
|
XuqmGroup Android SDK 更新模块。提供 App 版本检查和 APK 下载安装能力。
|
|
|
|
## 依赖
|
|
|
|
```kotlin
|
|
implementation("com.xuqm:sdk-update:VERSION")
|
|
implementation("com.xuqm:sdk-core:VERSION") // 必须
|
|
```
|
|
|
|
## 快速开始
|
|
|
|
```kotlin
|
|
val result = UpdateSDK.checkAppUpdate(context)
|
|
|
|
if (result.needsUpdate) {
|
|
UpdateSDK.downloadAndInstallApk(
|
|
context,
|
|
ApkInstallRequest(result.downloadUrl, result.versionCode, requireNotNull(result.apkHash)),
|
|
)
|
|
}
|
|
```
|
|
|
|
## API
|
|
|
|
| API | 说明 |
|
|
|-----|------|
|
|
| `UpdateSDK.checkAppUpdate(context, bypassIgnore)` | 检查 App 更新 |
|
|
| `UpdateSDK.downloadAndInstallApk(context, request, onProgress)` | 下载、校验并调起系统安装器 |
|
|
| `UpdateSDK.setLoginUpdateListener(listener)` | 接收登录后自动补检结果 |
|
|
|
|
### UpdateResult
|
|
|
|
```kotlin
|
|
data class UpdateResult(
|
|
val needsUpdate: Boolean,
|
|
val versionName: String?,
|
|
val versionCode: Int?,
|
|
val downloadUrl: String?,
|
|
val changeLog: String?,
|
|
val forceUpdate: Boolean?,
|
|
)
|
|
```
|
|
|
|
## 工作原理
|
|
|
|
- `downloadAndInstall` 将 APK 下载到 `getExternalFilesDir(null)`,通过 `FileProvider` 触发系统安装
|
|
- 安装所需 FileProvider 由依赖的 `sdk-file` 唯一声明,Update 不复制 Manifest 或 paths 资源
|
|
- 支持 WebSocket 实时推送更新通知
|
|
- 是否要求登录由租户平台配置决定;要求登录时,未登录检查会静默跳过
|
|
- 账号切换会取消旧会话检查并清理灰度判断缓存,新会话只自动补检一次
|