XuqmGroup-Web/docs-site/docs/android/update.md
XuqmGroup 041456805e docs(android-sdk): 添加 Android SDK 完整文档与模块配置
- 新增 Android SDK 主文档,包含模块结构、集成方式、快速开始指南
- 添加 sdk-core、sdk-im、sdk-push、sdk-update、sdk-webview 各模块详细说明
- 配置各模块的 build.gradle.kts 文件,设置依赖和发布选项
- 更新 gradle.properties 版本配置和编译参数
- 重构 XWebViewView 组件,增加相机权限、文件选择、下载拦截功能
- 添加 XWebViewTypes.kt 定义配置类和控制器接口
- 集成 Flutter WebView 桥接代码,实现跨平台功能对齐
2026-05-11 15:21:54 +08:00

3.3 KiB

Android 版本更新接入指南

模块com.xuqm:sdk-update · 功能App 版本检查、下载安装


1. 添加依赖

// app/build.gradle.kts
dependencies {
    implementation("com.xuqm:sdk-update:0.4.2")
}

2. 检查更新

import com.xuqm.sdk.update.UpdateSDK

// 在协程中调用
lifecycleScope.launch {
    val update = UpdateSDK.checkAppUpdate(context)
    if (update?.needsUpdate == true) {
        println("发现新版本: ${update.versionName}")
        println("更新日志: ${update.changeLog}")
        println("下载地址: ${update.downloadUrl}")
        
        if (update.forceUpdate == true) {
            // 强制更新:必须升级后才能使用
            showForceUpdateDialog(update)
        } else {
            // 可选更新:提示用户
            showOptionalUpdateDialog(update)
        }
    }
}

3. 下载并安装

lifecycleScope.launch {
    UpdateSDK.downloadAndInstall(context, downloadUrl) { progress ->
        // 更新下载进度 0-100
        updateProgressBar(progress)
    }
}

downloadAndInstall 内部会:

  1. 下载 APK 到外部存储目录
  2. 通过 FileProvider 获取文件 URI
  3. 启动系统安装界面

需提前配置 FileProvider

<!-- AndroidManifest.xml -->
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
<!-- res/xml/file_paths.xml -->
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-files-path name="updates" path="." />
</paths>

4. 强制更新处理

当服务端返回 forceUpdate = true 时,建议业务层:

  1. 弹出不可取消的对话框
  2. 只允许用户点击「立即更新」
  3. 下载完成后自动调用安装
fun showForceUpdateDialog(update: UpdateInfo) {
    AlertDialog.Builder(context)
        .setTitle("发现重要更新")
        .setMessage("当前版本已不可用,请升级至 ${update.versionName}")
        .setCancelable(false)
        .setPositiveButton("立即更新") { _, _ ->
            lifecycleScope.launch {
                UpdateSDK.downloadAndInstall(context, update.downloadUrl!!) { progress ->
                    // 显示下载进度
                }
            }
        }
        .show()
}

5. 多模块统一登录

Update 模块与 IM、Push 模块共享同一套登录态:

XuqmSDK.login(userId = "user_001", userSig = "jwt_token")
// UpdateSDK 在 checkAppUpdate 时自动携带 appKey,无需额外登录操作

6. 一键打包上传

SDK 提供 xuqmRelease Gradle 任务,可一键完成 Release 构建并上传至 XuqmGroup 版本管理服务:

./gradlew xuqmRelease

任务执行流程:

  1. 执行 assembleRelease 构建 Release APK
  2. 自动提取版本号、versionCode、更新日志
  3. 上传 APK 到 XuqmGroup 后台
  4. 返回发布结果

如需自定义配置,在 app/build.gradle.kts 中添加:

xuqmRelease {
    releaseNotesFile = file("CHANGELOG.md")
    forceUpdate = false
}