一個簡單好用的版本更新庫

描述

效果圖

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

功能介紹

  • 支持AndroidX
  • 支持后臺下載
  • 支持強制更新
  • 支持自定義下載過程
  • 支持 設(shè)備 >= Android M 動態(tài)權(quán)限的申請
  • 支持通知欄進度條展示(或者自定義顯示進度)
  • 支持Android N
  • 支持Android O
  • 支持Android P
  • 支持Android Q
  • 支持中/英文雙語(國際化)
  • 支持自定義內(nèi)置對話框樣式
  • 支持取消下載(如果發(fā)送了通知欄消息繁涂,則會移除)
  • 支持下載完成 打開新版本后刪除舊安裝包文件
  • 使用HttpURLConnection下載,未集成其他第三方框架

Demo下載體驗

點擊下載Demo進行體驗

DownloadManager:配置文檔

初始化使用DownloadManager.getInstance(this)

屬性 描述 默認(rèn)值 是否必須設(shè)置
context 上下文 null true
apkUrl apk的下載地址 null true
apkName apk下載好的名字 null true
downloadPath apk下載的位置 (2.7.0以上版本已過時) getExternalCacheDir() false
showNewerToast 是否提示用戶 "當(dāng)前已是最新版本" false false
smallIcon 通知欄的圖標(biāo)(資源id) -1 true
configuration 這個庫的額外配置 null false
apkVersionCode 更新apk的versionCode (如果設(shè)置了那么庫中將會進行版本判斷下面的屬性也就需要設(shè)置了) Integer.MIN_VALUE false
apkVersionName 更新apk的versionName null false
apkDescription 更新描述 null false
apkSize 新版本的安裝包大衅链酢(單位M) null false
apkMD5 新安裝包的md5(32位) null false

UpdateConfiguration:配置文檔

屬性 描述 默認(rèn)值
notifyId 通知欄消息id 1011
notificationChannel 適配Android O的渠道通知 詳情查閱源碼
httpManager 設(shè)置自己的下載過程 null
enableLog 是否需要日志輸出 true
onDownloadListener 下載過程的回調(diào) null
jumpInstallPage 下載完成是否自動彈出安裝頁面 true
showNotification 是否顯示通知欄進度(后臺下載提示) true
forcedUpgrade 是否強制升級 false
showBgdToast 是否提示 "正在后臺下載新版本…" true
onButtonClickListener 按鈕點擊事件回調(diào) null
dialogImage 對話框背景圖片資源(圖片規(guī)范參考demo) -1
dialogButtonColor 對話框按鈕的顏色 -1
dialogButtonTextColor 對話框按鈕的文字顏色 -1
dialogProgressBarColor 對話框進度條和文字顏色 -1

使用步驟

第一步: app/build.gradle進行依賴

implementation 'com.azhon:appupdate:2.8.0'

  • 如果你使用的是AndroidX疮丛,請依賴appupdateX
implementation 'com.azhon:appupdateX:2.8.0'

第二步:兼容Android N 及以上版本酿雪,在app/build.gradle添加如下代碼

defaultConfig {

    //每個應(yīng)用擁有不同的authorities暑椰,防止相同的在同一個手機上無法同時安裝
    resValue "string", "authorities", applicationId
}

第三步:創(chuàng)建DownloadManager见咒,更多用法請查看這里示例代碼

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)置的對話框那么你需要調(diào)用manager.setApkVersionCode()將新版本的versionCode填進去

第四步:混淆打包洽议,只需保持Activity宗收、Service不混淆

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service

使用技巧

  • 框架內(nèi)部支持中/英文 國際化(其他語言只需要在對應(yīng)的string.xml中取相同的名字即可)
  • 查看版本庫中的Log只需要過濾AppUpdate開頭的Tag
  • 支持校驗安裝包的MD5避免重復(fù)下載,只需要DownloadManager設(shè)置安裝包的MD5即可
  • 下載完成 打開新版本后刪除舊安裝包文件亚兄,實現(xiàn)思路請移步此處
//舊版本apk的文件保存地址
boolean b = ApkUtil.deleteOldApk(this, getExternalCacheDir().getPath() + "/appupdate.apk");

  • 溫馨提示:升級對話框中的內(nèi)容是可以上下滑動的哦混稽!
  • 如果需要實現(xiàn)自己一套下載過程,只需要繼承BaseHttpDownloadManager 并使用listener更新進度
public class MyDownload extends BaseHttpDownloadManager {}

版本更新記錄

  • v2.8.0(2020/02/21)
    • [修復(fù)] LogUtil偶現(xiàn)空指針問題
    • [優(yōu)化] FileProvider改為框架內(nèi)置审胚,用戶無需手動配置
    • [優(yōu)化] apkVersionCode的判斷
  • 更多更新記錄點此查看

下載源碼

點擊下載

開源

項目地址: https://github.com/azhon/AppUpdate

項目分類: Android

授權(quán)協(xié)議 : Apache-2.0

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匈勋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子菲盾,更是在濱河造成了極大的恐慌颓影,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懒鉴,死亡現(xiàn)場離奇詭異诡挂,居然都是意外死亡,警方通過查閱死者的電腦和手機临谱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門璃俗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悉默,你說我怎么就攤上這事城豁。” “怎么了抄课?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵唱星,是天一觀的道長雳旅。 經(jīng)常有香客問我,道長间聊,這世上最難降的妖魔是什么攒盈? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮哎榴,結(jié)果婚禮上型豁,老公的妹妹穿的比我還像新娘。我一直安慰自己尚蝌,他們只是感情好迎变,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著飘言,像睡著了一般衣形。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上热凹,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天泵喘,我揣著相機與錄音,去河邊找鬼般妙。 笑死纪铺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碟渺。 我是一名探鬼主播鲜锚,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苫拍!你這毒婦竟也來了芜繁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤绒极,失蹤者是張志新(化名)和其女友劉穎骏令,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垄提,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡榔袋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了铡俐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰兑。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖审丘,靈堂內(nèi)的尸體忽然破棺而出吏够,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布锅知,位于F島的核電站播急,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏喉镰。R本人自食惡果不足惜旅择,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侣姆。 院中可真熱鬧,春花似錦沉噩、人聲如沸捺宗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚜厉。三九已至,卻和暖如春畜眨,著一層夾襖步出監(jiān)牢的瞬間昼牛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工康聂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贰健,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓恬汁,卻偏偏與公主長得像伶椿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子氓侧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360