收藏 0
一行代码,快速实现app在线下载更新 A simple library for Android update app
UpdateAppUtils2.0 特点
Kotlin First,Kotlin开发
支持AndroidX
支持Md5签名验证
支持自定义任意UI
适配中英文
适配至Android9.0
通知栏图片自定义
支持修改是否每次显示弹窗(非强更)
支持安装完成后自动删除安装包
UpdateAppUtils2.0功能结构变化巨大,建议使用2.0以上版本;2.0以前版本文档
效果图
集成
repositories {
jcenter()
}
// Support
implementation 'com.teprinciple:updateapputils:2.1.0'
AndroidX项目
// AndroidX
implementation 'com.teprinciple:updateapputilsX:2.1.0'
使用
下面为kotlin使用示例,Java示例请参考JavaDemo
1、快速使用
UpdateAppUtils
.getInstance()
.apkUrl(apkUrl)
.updateTitle(updateTitle)
.updateContent(updateContent)
.update()
2、多配置使用
// ui配置
val uiConfig = UiConfig().apply {
uiType = UiType.PLENTIFUL
cancelBtnText = "下次再说"
updateLogoImgRes = R.drawable.ic_update
updateBtnBgRes = R.drawable.bg_btn
titleTextColor = Color.BLACK
titleTextSize = 18f
contentTextColor = Color.parseColor("#88e16531")
}
// 更新配置
val updateConfig = UpdateConfig().apply {
force = true
checkWifi = true
needCheckMd5 = true
isShowNotification = true
notifyImgRes = R.drawable.ic_logo
apkSavePath = Environment.getExternalStorageDirectory().absolutePath +"/teprinciple"
apkSaveName = "teprinciple"
}
UpdateAppUtils
.getInstance()
.apkUrl(apkUrl)
.updateTitle(updateTitle)
.updateContent(updateContent)
.updateConfig(updateConfig)
.uiConfig(uiConfig)
.setUpdateDownloadListener(object : UpdateDownloadListener{
// do something
})
.update()
3、md5校验说明
为了保证app的安全性,避免apk被二次打包的风险。UpdateAppUtils内部提供了对签名文件md5值校验的接口; 首先你需要保证当前应用和服务器apk使用同一个签名文件进行了签名(一定要保管好自己的签名文件,否则检验就失去了意义), 然后你需要将UpdateConfig 的 needCheckMd5 设置为true,并在Md5CheckResultListener监听中,监听校验返回结果。具体使用可参考 CheckMd5DemoActivity
UpdateAppUtils
.getInstance()
.apkUrl(apkUrl)
.updateTitle(updateTitle)
.updateContent(updateContent)
.updateConfig(updateConfig) // needCheckMd5设置为true
.setMd5CheckResultListener(object : Md5CheckResultListener{
override fun onResult(result: Boolean) {
// true:检验通过,false:检验失败
}
})
4、自定义UI
UpdateAppUtils内置了两套UI,你可以通过修改UiConfig进行UI内容的自定义; 当然当内部UI模板与你期望UI差别很大时,你可以采用完全自定义UI
5、删除已安装APK
UpdateAppUtils在应用启动时,通过对比当前应用和已下载apk的VersionCode是否相同来判断已下载apk是否已安装; 如果两者VersionCode相同则认为apk已经安装,应被删除。
// 在Application或者MainActivity中调用,以达到安装成功启动后删除已安装apk
UpdateAppUtils.getInstance().deleteInstalledApk()
Api说明
1、UpdateAppUtils Api
api说明默认值必须设置fun apkUrl(apkUrl: String)更新包服务器urlnulltrue
fun update()UpdateAppUtils入口–true
fun updateTitle(title: String)更新标题版本更新啦!false
fun updateContent(content: String)更新内容发现新版本,立即更新false
fun updateConfig(config: UpdateConfig)更新配置查看源码false
fun uiConfig(uiConfig: UiConfig)更新弹窗UI配置查看源码false
fun setUpdateDownloadListener()下载过程监听nullfalse
fun setMd5CheckResultListener()md5校验结果回调nullfalse
fun setOnInitUiListener()初始化更新弹窗UI回调nullfalse
fun deleteInstalledApk()删除已安装的apk–false
fun setCancelBtnClickListener()暂不更新按钮点击监听–false
fun setUpdateBtnClickListener()立即更新按钮点击监听–false
2、UpdateConfig:更新配置说明
属性说明默认值isDebug是否输出【UpdateAppUtils】为Tag的日志true
force是否强制更新,强制时无取消按钮false
apkSavePathapk下载存放位置包名目录
apkSaveNameapk保存文件名项目名
downloadBy下载方式DownLoadBy.APP
needCheckMd5是否需要校验apk签名md5false
checkWifi检查是否wififalse
isShowNotification是否显示通知栏进度true
notifyImgRes通知栏图标项目icon
serverVersionName服务器上apk版本名无
serverVersionCode服务器上apk版本号无
alwaysShow是否每次显示更新弹窗(非强更)true
thisTimeShow本次是否显示更新弹窗(非强更)false
alwaysShowDownLoadDialog是否需要显示更新下载进度弹窗(非强更)false
showDownloadingToast开始下载时是否显示Toasttrue
3、UiConfig:更新弹窗Ui配置说明
属性说明默认值uiTypeui模板UiType.SIMPLE
customLayoutId自定义布局idfalse
updateLogoImgRes更新弹窗logo图片资源id–
titleTextSize标题字体大小16sp
titleTextColor标题字体颜色–
contentTextSize内容字体大小14sp
contentTextColor内容字体颜色–
updateBtnBgColor更新按钮背景颜色–
updateBtnBgRes更新按钮背景资源id–
updateBtnTextColor更新按钮字体颜色–
updateBtnTextSize更新按钮文字大小14sp
updateBtnText更新按钮文案立即更新
cancelBtnBgColor取消按钮背景颜色–
cancelBtnBgRes取消按钮背景资源id–
cancelBtnTextColor取消按钮文字颜色–
cancelBtnTextSize取消按钮文字大小14sp
cancelBtnText取消按钮文案暂不更新
downloadingToastText开始下载时的Toast提示文字更新下载中…
downloadingBtnText下载中 下载按钮以及通知栏标题前缀,进度自动拼接在后面下载中
downloadFailText下载出错时,下载按钮及通知栏标题下载出错,点击重试