Android實現APP版本更新

原文鏈接:https://www.jianshu.com/p/c089e222f820

UpdateAppUtils2.0

一行代碼,快速實現app在線下載更新 A simple library for Android update app

UpdateAppUtils2.0 特點

  • Kotlin First,Kotlin開發
  • 支持AndroidX
  • 支持Md5簽名驗證
  • 支持自定義任意UI
  • 適配中英文
  • 適配至Android9.0
  • 通知欄圖片自定義
  • 支持修改是否每次顯示彈窗(非強更)
  • 支持安裝完成後自動刪除安裝包

效果圖

     

 

集成

repositories {
   jcenter()    
}

// Support
implementation 'com.teprinciple:updateapputils:2.0.0'

// AndroidX
implementation 'com.teprinciple:updateapputilsX:2.0.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()

更多內容參見源碼

Demo體驗

demo.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章