# Android 版本更新接入指南 **模块**:`com.xuqm:sdk-update` · **功能**:App 版本检查、下载安装 --- ## 1. 添加依赖 ```kotlin // app/build.gradle.kts dependencies { implementation("com.xuqm:sdk-update:0.4.0") } ``` --- ## 2. 检查更新 ```kotlin 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. 下载并安装 ```kotlin lifecycleScope.launch { UpdateSDK.downloadAndInstall(context, downloadUrl) { progress -> // 更新下载进度 0-100 updateProgressBar(progress) } } ``` `downloadAndInstall` 内部会: 1. 下载 APK 到外部存储目录 2. 通过 `FileProvider` 获取文件 URI 3. 启动系统安装界面 **需提前配置 `FileProvider`**: ```xml ``` ```xml ``` --- ## 4. 强制更新处理 当服务端返回 `forceUpdate = true` 时,建议业务层: 1. 弹出不可取消的对话框 2. 只允许用户点击「立即更新」 3. 下载完成后自动调用安装 ```kotlin 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 模块共享同一套登录态: ```kotlin XuqmSDK.login(userId = "user_001", userSig = "jwt_token") // UpdateSDK 在 checkAppUpdate 时自动携带 appKey,无需额外登录操作 ```