描述
效果圖
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
功能介紹
- 支持AndroidX
- 支持后臺(tái)下載
- 支持強(qiáng)制更新
- 支持自定義下載過(guò)程
- 支持 設(shè)備 >= Android M 動(dòng)態(tài)權(quán)限的申請(qǐng)
- 支持通知欄進(jìn)度條展示(或者自定義顯示進(jìn)度)
- 支持Android N
- 支持Android O
- 支持Android P
- 支持Android Q
- 支持中/英文雙語(yǔ)(國(guó)際化)
- 支持自定義內(nèi)置對(duì)話框樣式
- 支持取消下載(如果發(fā)送了通知欄消息,則會(huì)移除)
- 支持下載完成 打開新版本后刪除舊安裝包文件
- 使用HttpURLConnection下載,未集成其他第三方框架
Demo下載體驗(yàn)
DownloadManager:配置文檔
初始化使用
DownloadManager.getInstance(this)
屬性 | 描述 | 默認(rèn)值 | 是否必須設(shè)置 |
---|---|---|---|
context | 上下文 | null | true |
apkUrl | apk的下載地址 | null | true |
apkName | apk下載好的名字 | null | true |
downloadPath | apk下載的位置 (2.7.0以上版本已過(guò)時(shí)) | getExternalCacheDir() | false |
showNewerToast | 是否提示用戶 "當(dāng)前已是最新版本" | false | false |
smallIcon | 通知欄的圖標(biāo)(資源id) | -1 | true |
configuration | 這個(gè)庫(kù)的額外配置 | null | false |
apkVersionCode | 更新apk的versionCode (如果設(shè)置了那么庫(kù)中將會(huì)進(jìn)行版本判斷下面的屬性也就需要設(shè)置了) | Integer.MIN_VALUE | false |
apkVersionName | 更新apk的versionName | null | false |
apkDescription | 更新描述 | null | false |
apkSize | 新版本的安裝包大?。▎挝籑) | null | false |
apkMD5 | 新安裝包的md5(32位) | null | false |
UpdateConfiguration:配置文檔
屬性 | 描述 | 默認(rèn)值 |
---|---|---|
notifyId | 通知欄消息id | 1011 |
notificationChannel | 適配Android O的渠道通知 | 詳情查閱源碼 |
httpManager | 設(shè)置自己的下載過(guò)程 | null |
enableLog | 是否需要日志輸出 | true |
onDownloadListener | 下載過(guò)程的回調(diào) | null |
jumpInstallPage | 下載完成是否自動(dòng)彈出安裝頁(yè)面 | true |
showNotification | 是否顯示通知欄進(jìn)度(后臺(tái)下載提示) | true |
forcedUpgrade | 是否強(qiáng)制升級(jí) | false |
showBgdToast | 是否提示 "正在后臺(tái)下載新版本…" | true |
onButtonClickListener | 按鈕點(diǎn)擊事件回調(diào) | null |
dialogImage | 對(duì)話框背景圖片資源(圖片規(guī)范參考demo) | -1 |
dialogButtonColor | 對(duì)話框按鈕的顏色 | -1 |
dialogButtonTextColor | 對(duì)話框按鈕的文字顏色 | -1 |
dialogProgressBarColor | 對(duì)話框進(jìn)度條和文字顏色 | -1 |
使用步驟
第一步: app/build.gradle
進(jìn)行依賴
implementation 'com.azhon:appupdate:2.8.0'
- 如果你使用的是
AndroidX
,請(qǐng)依賴appupdateX
implementation 'com.azhon:appupdateX:2.8.0'
第二步:兼容Android N 及以上版本,在app/build.gradle
添加如下代碼
defaultConfig {
//每個(gè)應(yīng)用擁有不同的authorities,防止相同的在同一個(gè)手機(jī)上無(wú)法同時(shí)安裝
resValue "string", "authorities", applicationId
}
第三步:創(chuàng)建DownloadManager
,更多用法請(qǐng)查看這里示例代碼
DownloadManager manager = DownloadManager.getInstance(this);
manager.setApkName("appupdate.apk")
.setApkUrl("https://raw.githubusercontent.com/azhon/AppUpdate/master/apk/appupdate.apk")
.setSmallIcon(R.mipmap.ic_launcher)
.download();
如果需要顯示內(nèi)置的對(duì)話框那么你需要調(diào)用manager.setApkVersionCode()
將新版本的versionCode填進(jìn)去
第四步:混淆打包,只需保持Activity
、Service
不混淆
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service
使用技巧
- 框架內(nèi)部支持中/英文 國(guó)際化(其他語(yǔ)言只需要在對(duì)應(yīng)的
string.xml
中取相同的名字即可) - 查看版本庫(kù)中的Log只需要過(guò)濾
AppUpdate
開頭的Tag - 支持校驗(yàn)安裝包的MD5避免重復(fù)下載,只需要
DownloadManager
設(shè)置安裝包的MD5即可 - 下載完成 打開新版本后刪除舊安裝包文件,實(shí)現(xiàn)思路請(qǐng)移步此處
//舊版本apk的文件保存地址
boolean b = ApkUtil.deleteOldApk(this, getExternalCacheDir().getPath() + "/appupdate.apk");
- 溫馨提示:升級(jí)對(duì)話框中的內(nèi)容是可以上下滑動(dòng)的哦!
- 如果需要實(shí)現(xiàn)自己一套下載過(guò)程,只需要繼承
BaseHttpDownloadManager
并使用listener更新進(jìn)度
public class MyDownload extends BaseHttpDownloadManager {}
版本更新記錄
- v2.8.0(2020/02/21)
- [修復(fù)] LogUtil偶現(xiàn)空指針問(wèn)題
- [優(yōu)化] FileProvider改為框架內(nèi)置,用戶無(wú)需手動(dòng)配置
- [優(yōu)化] apkVersionCode的判斷
- 更多更新記錄點(diǎn)此查看
下載源碼
開源
項(xiàng)目地址: https://github.com/azhon/AppUpdate
項(xiàng)目分類: Android
授權(quán)協(xié)議 : Apache-2.0