Kongzue的App更新框架

Kongzue發表於2019-03-03

Kongzue APP更新工具:Github

更新日誌:

1.3.0:修復安卓8.0裝置上安裝崩潰的問題;

1.4.0:修復進度顯示可能存在問題的bug;

說明

  1. 本工具無需許可權,但在 targetSdkVersion >= 26 的情況時可能出現安裝程式閃退但不報錯的問題,系 Android 8.0 的新規定,請在您的應用中新增如下許可權即可:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
複製程式碼
  1. 本工具提供下載、安裝步驟,因網路請求框架不確定,本工具不包含到您伺服器的檢查更新的網路請求,請在獲取到相應的更新資訊請您自行完成。
  2. 本工具需要您提供的引數對照表如下:
欄位 含義 是否必須
info 更新日誌 可選
ver 版本號 可選
downloadUrl 下載地址 必須
me(Context) 上下文索引 必須
packageName 包名 必須
onDownloadListener 下載監聽器 可選

需要的許可權:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
複製程式碼

準備

  1. 修改 AndroidManifest.xml
    因 Android 7.0規範限定,我們需要建立一個共享目錄來儲存下載的檔案
    請在 AndroidManifest.xml 中加入如下程式碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="您的包名">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        ...>
        
        ...
        
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="您的包名.fileProvider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_path"/>
        </provider>
    </application>
</manifest>
複製程式碼

接下來在 res 目錄下建立資料夾 xml,並新增檔案 file_path.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <paths>
        <external-path path="" name="download"/>
    </paths>
</resources>
複製程式碼
  1. 使用前請先建立UpdateInfo,舉例方法如下
updateInfo = new UpdateInfo()
.setInfo("1.上線了極力要求以至於無法再拒絕的收入功能
" +
        "2.出行的二級分類加入了地鐵、地鐵、地鐵
" +
        "3.「關於」新增應用商店評分入口,你們知道怎麼做
" +
        "4.「關於」還加入了GitHub地址,情懷+1s
" +
        "5.全新的底層適配框架,優化更多機型")
.setVer("v2.5")
.setDownloadUrl("http://paywhere.kongzue.com/downloads/paywhere.apk");
複製程式碼

下載並安裝

  1. 使用如下語句建立下載工具:
    me(Context) 傳入上下文索引,一般使用本 Activity 即可
    packageName 可直接使用 BuildConfig.APPLICATION_ID 獲取:
UpdateUtil updateUtil = new UpdateUtil(MainActivity.this, BuildConfig.APPLICATION_ID);
複製程式碼
  1. 開始下載:
updateUtil.doUpdate(updateInfo);
複製程式碼

下載完成後會自動呼叫安裝。

  1. 關於下載的監聽
    您可以通過以下程式碼監聽下載過程:
UpdateUtil updateUtil = new UpdateUtil(MainActivity.this, BuildConfig.APPLICATION_ID)
        .setOnDownloadListener(new UpdateUtil.OnDownloadListener() {
            @Override
            public void onStart(long downloadId) {
                Log.i("MainActivity", "onStart: 下載開始");
            }
            @Override
            public void onDownloading(long downloadId, int progress) {
                Log.i("MainActivity", "onStart: 下載中:"+progress);
            }
            @Override
            public void onSuccess(long downloadId) {
                Log.i("MainActivity", "onStart: 下載完成");
            }
        })
複製程式碼

其他

可選的更新提示對話方塊
KongzueUpdateSDK 提供了一個可選使用的簡易更新提示對話方塊,呼叫方法如下:

UpdateUtil updateUtil = new UpdateUtil(MainActivity.this, BuildConfig.APPLICATION_ID)
        .showNormalUpdateDialog(updateInfo,
                "檢查到更新(" + updateInfo.getVer() + ")",
                "從商店下載",
                "直接下載",
                "取消");
複製程式碼

引入KongzueUpdateSDK到您的專案

引入方法:

implementation `com.kongzue.kongzueupdatesdk:kongzueupdatesdk:1.4.0`
複製程式碼

額外的小工具:

UpdateUtil.isWifi()                         //判斷Wifi狀態
UpdateUtil.isShowProgressDialog = true;     //是否開啟進度對話方塊(預設開啟)
複製程式碼

相關文章