• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

    你想要的Android全量版本更新功能,我這兒都有!
    2021-09-09 14:00:54

    背景

    前段時間我寫了一篇介紹我的一個開源項目XUpdate的博客: 史上最好用的Android全量版本更新庫XUpdate使用指南, 收到了大家普遍的認可,但與此同時也有人向我反饋了不少建議,比如說:

    • 能否提供一個一鍵可使用的庫?
    • 能否支持斷點續傳下載功能?

    出于以上的建議, 同時也是為了能夠更加完善我的XUpdate生態圈,于是我抽出一點時間,簡單地實現了一個XUpdate拓展庫 XUpdateAPI, 項目的地址如下:

    https://github.com/xuexiangjys/XUpdateAPI

    ?

    XUpdate系列|框架基礎使用詳解

    ?


    項目介紹

    為了方便大家更快地使用XUpdate, 降低集成的難度,我編寫了這個配套的拓展庫。本庫目前包含如下兩部分內容:

    • EasyUpdate: 提供快速接入XUpdate的功能,無需初始化便可直接使用。

    • AriaDownloader: 提供斷點續傳下載的功能。

    集成指南

    添加Gradle依賴

    1.先在項目根目錄的 build.gradle 的 repositories 添加:

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

    2.然后在dependencies添加:

       implementation 'com.github.xuexiangjys:XUpdate:2.0.6'
       implementation 'com.github.xuexiangjys.XUpdateAPI:xupdate-easy:1.0.0'
       // 如果需要使用斷點續傳下載功能的話添加該依賴(可選)
       implementation 'com.github.xuexiangjys.XUpdateAPI:xupdate-downloader-aria:1.0.0'
    

    3.自定義初始化配置(可選)

    因為本庫采取了自動初始化的功能,因此你無需進行初始化,但是如果你需要自定義初始化配置的話,你可以實現IUpdateConfigProvider,并在ApplicationattachBaseContext前調用EasyUpdate.setUpdateConfigProvider方法設置自定義配置。

        @Override
        protected void attachBaseContext(Context base) {
            // 實現自定義配置
            EasyUpdate.setUpdateConfigProvider(new CustomUpdateConfigProvider());
            super.attachBaseContext(base);
        }
    
    

    4.開啟斷點續傳下載功能(可選)

    • 方法一: 在自定義配置中設置下載代理
    UpdateConfig.create()
            // 開啟斷點續傳下載功能
            .setDownloadServiceProxy(new AriaDownloadServiceProxyImpl(context))
    
    • 方法二: 使用AriaDownloader.enable開啟
    AriaDownloader.enable(this);
    
    • 方法三: 使用AriaDownloader.getUpdateHttpService獲取下載服務
    EasyUpdate.create(getContext(), Constants.UPDATE_DEFAULT_URL)
            .updateHttpService(AriaDownloader.getUpdateHttpService(getContext()))
    

    注意事項

    需要注意的是,在使用EasyUpdate的時候,務必保證服務器返回的json格式應包括如下內容:

    {
      "Code": 0, //0代表請求成功,非0代表失敗
      "Msg": "", //請求出錯的信息
      "UpdateStatus": 1, //0代表不更新,1代表有版本更新,不需要強制升級,2代表有版本更新,需要強制升級
      "VersionCode": 3,
      "VersionName": "1.0.2",
      "ModifyContent": "1、優化api接口。
    2、添加使用demo演示。
    3、新增自定義更新服務API接口。
    4、優化更新提示界面。",
      "DownloadUrl": "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk",
      "ApkSize": 2048
      "ApkMd5": "..."  //md5值沒有的話,就無法保證apk是否完整,每次都會重新下載。
    }
    

    如果你不想使用默認的json格式的話,可參考XUpdate中如何自定義版本更新解析器

    使用方法

    EasyUpdate主要提供了如下兩個方法:

    • EasyUpdate.create: 構建版本更新檢查管理者

    • EasyUpdate.checkUpdate: 直接版本更新

    具體使用參見 EasyUpdateFragment。

    當然XUpdate的所有方法也都是支持的,具體可以參考XUpdate的使用說明.

    混淆配置

    • XUpdate
    -keep class com.xuexiang.xupdate.entity.** { *; }
    
    //注意,如果你使用的是自定義Api解析器解析,還需要給你自定義Api實體配上混淆,如下是本demo中配置的自定義Api實體混淆規則:
    -keep class com.xuexiang.xupdatedemo.entity.** { *; }
    
    • AriaDownloader
    -dontwarn com.arialyy.aria.**
    -keep class com.arialyy.aria.**{*;}
    -keep class **$$DownloadListenerProxy{ *; }
    -keep class **$$UploadListenerProxy{ *; }
    -keep class **$$DownloadGroupListenerProxy{ *; }
    -keep class **$$DGSubListenerProxy{ *; }
    -keepclasseswithmembernames class * {
        @Download.* <methods>;
        @Upload.* <methods>;
        @DownloadGroup.* <methods>;
    }
    

    配套設置

    • XUpdate核心庫: https://github.com/xuexiangjys/XUpdate
    • 后臺版本更新管理服務: https://github.com/xuexiangjys/XUpdateService
    • 后臺版本更新管理系統: https://github.com/xuexiangjys/xupdate-management
    • Flutter插件: https://github.com/xuexiangjys/flutter_xupdate
    • React-Native插件: https://github.com/xuexiangjys/react-native-xupdate

    聯系方式

    更多資訊內容,歡迎掃描關注我的個人微信公眾號:【我的Android開源之旅】

    你想要的Android全量版本更新功能,我這兒都有!_版本更新

    ?

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码