# UpdateAppLib **Repository Path**: trydamer/update-app-lib ## Basic Information - **Project Name**: UpdateAppLib - **Description**: App更新模块 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-31 - **Last Updated**: 2022-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Android 更新模块 ![version](https://img.shields.io/badge/version-1.0.0-brightgreen.svg) ![API](https://img.shields.io/badge/API-22-brightgreen.svg) ![LICENSE](https://badgen.net/badge/LICSENSE/Apache2.0/blue) ### 一、前言 这是一个Android app更新的模块,功能如下: - App下载; - 后台下载; - 暂停下载; - 可选更新; - 强制更新; - 断点续传(App强制退出后依然可以从断点位置开始下载,当然前提是服务器支持); - 下载完成自动跳转安装页面。 本模块没有提供检查App更新的功能,需要App自身检测了之后把相关数据传给本模块下载而已。 ### 二、效果 **下载失败,点击重试(还是失败,哈哈哈)** ![下载失败重试](img/download_failed.gif) **暂定下载,继续下载,后台下载,下载完成安装** ![暂定下载,继续下载,后台下载,下载完成安装](img/download_pause_resume_background_install.gif) ### 三、使用   添加权限等就不必多说了,直接看如何使用吧!!! ```kotlin private fun update(t: BaseResponse) { Log.d(TAG, "检查App更新结果:${t.data}") val updateAppDTO = t.data if (updateAppDTO == null) { Toast.makeText(this@MainActivity, "检查失败,数据为空", Toast.LENGTH_SHORT).show() } try { val newVersion: Int = updateAppDTO!!.version.replace(".", "").toInt() val curVersion = UpdateAppUtil.getAppVersionCode(UpdateAppUtil.getAppVersionName(this@MainActivity)) if (newVersion <= curVersion) { Toast.makeText(this@MainActivity, "已是最新版本", Toast.LENGTH_SHORT).show(); return } } catch (e: NumberFormatException) { Toast.makeText(this@MainActivity, "数据错误:${e.toString()}", Toast.LENGTH_SHORT).show(); return } /** * 把检测结果的bean换成UpdateAppBean就可以不用下面这步。 * UpdateAppDTO是检测app更新的结果,UpdateAppBean是 * 更新模块需要的数据。 * */ val updateAppBean = UpdateAppBean() updateAppBean.desc = updateAppDTO.desc updateAppBean.url = updateAppDTO.url updateAppBean.mode = updateAppDTO.mode updateAppBean.md5 = updateAppDTO.md5 updateAppBean.version = updateAppDTO.version updateAppBean.apkSize = updateAppDTO.apkSize if (updateAppUtil == null) { updateAppUtil = UpdateAppUtil(this@MainActivity, lifecycle) updateAppUtil!! /** * 设置正在下载时的文件标识,临时文件名 * */ .setDownloadTempFileTag("update_app_temp.temp") /** * 设置下载完成后的文件标识,最终文件名 * */ .setDownloadDoneFileTag("update_app_test_done") /** * 设置下载目录 * */ .setDownloadPath( Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS).absolutePath) /** * 设置下载的App的信息 * */ .setUpdateAppBean(updateAppBean) } else { updateAppUtil!!.setUpdateAppBean(updateAppBean) } } ``` ### 四、更新记录 #### v1.0.0 - 该模块目前还不支持定制弹窗,而且弹窗UI的逻辑还和更新的逻辑绑定在一起了; - 更新完毕后不会自动删除安装包,需要App自己实现; - 总的来说,就是提高了下载功能和安装功能,其他的均需要App自己实现。