Android 新手如何實現(xiàn)更新APP

此庫基于https://github.com/czy1121/update 該項目進行修改,保留大部分代碼。

為什么有修改,引用項目當中對服務器返回格式進行了限制(或許我沒找到方法),無法滿足自定義需求。為了能符合自己的設計規(guī)范,進行了微調(diào)整。

后臺API設計,返回數(shù)據(jù)樣例,僅供參考,可以按照需求自己定義

{
    "Code": 200,
    "Message": "獲取成功!",
    "Data": {
        "APPID": "D04AC824-2174-4681-9D14-E08831D5DE04",
        "APPKey": "90ded202bc6c8d8d46c5e3f0d9a23bdc",
        "APPName": "更新app",
        "ClientVersion": "1.0.5",
        "DownloadUrl": "http://app.down/app.apk",
        "UpdateVersion": 6,
        "UpdateType": 1,
        "UpdateLog": "1.優(yōu)化更新內(nèi)容",
        "UpdateTime": "2016-12-15 12:10:52",
        "MD5": "B8B038414A8BFAF8333280D0FD243C6E",
        "Size": 7024539
    }
}
字段說明

APPID:就是id
APPKey:設置該字段可以使多個app公用一個接口
APPName:app的名字
ClientVersion:對應Android中的versionName
DownloadUrl:app下載地址
UpdateVersion:對應Android中的versionCode,修改改字段才能使APP彈出提示
UpdateType:控制更新類型:1 是普通更新 2 強制更新
UpdateLog:更新日志
UpdateTime:升級時間
MD5:校驗文件的MD5 ,保證下載完整性
Size:文件大小 ( long )

如何使用

step1

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

step2

dependencies {
            compile 'com.github.wyh497823256:UpdateLib:1.0.0'
    }
//RxJava 獲取服務器數(shù)據(jù)
@Override
public void onNext(ResultDataEntity<VersionInfoEntity> versionInfoEntityResultDataEntity) {
    //獲取ReturnData中的數(shù)據(jù)
       VersionInfoEntity versionInfoEntity = versionInfoEntityResultDataEntity.getData();
           //服務器版本是否大于本地版本,是的話進行更新
           if (versionInfoEntity != null && versionInfoEntity.getUpdateVersion() > AppUtils.getAppVersionCode(Utils.context)) {
             //更新數(shù)據(jù)     
                            UpdateInfo updateInfo = new UpdateInfo();
                //填充apk大小
                            updateInfo.size = versionInfoEntity.getSize();
                //是否更新,當然可以從服務器配置,在這默認為true
                            updateInfo.hasUpdate = true;
                //是否忽略更新,true的話啟用一個選擇框
                            updateInfo.isIgnorable = false;
                //是否強制更新
                            if (versionInfoEntity.getUpdateType() == 2) {
                                updateInfo.isForce = true;
                            }
                // 版本號
                            updateInfo.versionCode = versionInfoEntity.getUpdateVersion();
                            updateInfo.versionName = versionInfoEntity.getClientVersion();
               // md5校驗,
                            updateInfo.md5 = versionInfoEntity.getMD5();
                            updateInfo.updateContent = versionInfoEntity.getUpdateLog();
                            updateInfo.url = versionInfoEntity.getDownloadUrl();
              //mView.getUpdateManager() = UpdateManager.create(getContext());
                            mView.getUpdateManager()
                                    .setWifiOnly(false)// 是否只在wifi環(huán)境下更新
                                    .setUpdateInfo(updateInfo) //將以上的數(shù)據(jù)填充進去
                                    .check();
                        }
                  }
效果圖
image
image

Q&A

如何獲取文件MD5和大小
壓縮(好壓)軟件自帶的工具,一鍵可以提取出MD5和SIZE
不符合我的需求怎么辦
可以查看https://github.com/czy1121/update  自己定制

GitHub Demo 地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,036評論 25 709
  • 1. 函數(shù)聲明和函數(shù)表達式有什么區(qū)別 函數(shù)聲明和函數(shù)表達式都是聲明函數(shù)的方式 區(qū)別1 寫法:函數(shù)聲明 : fu...
    怎么昵稱閱讀 295評論 0 0
  • 哲思 (一) 火車咔咔的前進 一個人正靜靜的苦訴 一朵昨日的玫瑰在此暗淡 一顆無名的種子就此誕生 (二) 當我們相...
    面具里的夢志田閱讀 213評論 2 14
  • 首先,你得有個愿意幫忙帶娃的婆婆 兩代人一起帶娃難免會有各種矛盾。耳邊也總是充斥著諸多對隔代育兒的擔憂和不滿。然而...
    鐘不停擺閱讀 3,119評論 30 22
  • swift中的GCD 之前寫過一篇文章介紹object-c中的多線程,各種拼湊其實不是很深入,只能當做cookbo...
    共田君閱讀 2,578評論 0 5

友情鏈接更多精彩內(nèi)容