熱更新實(shí)踐

“熱部署” – 方法內(nèi)的簡(jiǎn)單修改,無(wú)需重啟app和Activity。 “暖部署” – app無(wú)需重啟,但是activity需要重啟,比如資源的修改。 “冷部署” – app需要重啟,比如繼承關(guān)系的改變或方法的簽名變化等。

阿里云Sophix熱修復(fù)之簡(jiǎn)單使用

Sophix集成示例:

第一步:找到Project的build.gradle文件,在allProjects節(jié)點(diǎn)下加上如下代碼:
repositories {
          maven { url"http://maven.aliyun.com/nexus/content/repositories/releases"}
}

第二步:找到Module的build.gradle文件,添加依賴:

compile'com.aliyun.ams:alicloud-android-hotfix:3.0.7'
然后同步project

第三步:添加權(quán)限,SDK使用到以下權(quán)限
  <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--<! -- 外部存儲(chǔ)讀權(quán)限,調(diào)試工具加載本地補(bǔ)丁需要 –>-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

READ_EXTERNAL_STORAGE/ACCESS_WIFI_STATE 權(quán)限屬于Dangerous Permissions,自行做好android6.0以上的運(yùn)行時(shí)權(quán)限獲取

第四步:密鑰等配置,在application節(jié)點(diǎn)下加入以下配置:
<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密鑰" />

第五步:登錄阿里云熱修復(fù)管理控制臺(tái),填入對(duì)應(yīng)3個(gè)value
第六步:代碼集成

在Application的attachBaseContext方法里加入Sophix初始化

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        SophixManager.getInstance().setContext(this)
                .setAppVersion(getAppVersion())
                .setAesKey(null)
                .setEnableDebug(true)
                .setPatchLoadStatusStub(new PatchLoadStatusListener() {
                    @Override
                    public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
                        // 補(bǔ)丁加載回調(diào)通知
                        if (code == PatchStatus.CODE_LOAD_SUCCESS) {
                            // 表明補(bǔ)丁加載成功
                        } else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
                            // 表明新補(bǔ)丁生效需要重啟. 開(kāi)發(fā)者可提示用戶或者強(qiáng)制重啟;
                            // 建議: 用戶可以監(jiān)聽(tīng)進(jìn)入后臺(tái)事件, 然后應(yīng)用自殺
                        } else if (code == PatchStatus.CODE_LOAD_FAIL) {
                            // 內(nèi)部引擎異常, 推薦此時(shí)清空本地補(bǔ)丁, 防止失敗補(bǔ)丁重復(fù)加載
                             SophixManager.getInstance().cleanPatches();
                        } else {
                            // 其它錯(cuò)誤信息, 查看PatchStatus類說(shuō)明
                        }
                    }
                }).initialize();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        ......
       // queryAndLoadNewPatch不可放在attachBaseContext 中,否則無(wú)網(wǎng)絡(luò)權(quán)限,建議放在后面任意時(shí)刻,如onCreate中
        SophixManager.getInstance().queryAndLoadNewPatch();
}

自此SDK的集成已經(jīng)差不多完成,官方給出了很詳細(xì)的集成方法,官方集成文檔

第七步:生成熱修復(fù)補(bǔ)丁

我們直接看官方文檔這里面寫(xiě)的很詳細(xì),細(xì)到每個(gè)設(shè)置每個(gè)參數(shù)都有說(shuō)明

第八步:調(diào)試并發(fā)布補(bǔ)丁

首先我們需要上傳補(bǔ)丁到阿里云管理后臺(tái),點(diǎn)此查看詳細(xì)操作
接下來(lái)是對(duì)補(bǔ)丁的調(diào)試,點(diǎn)此查看詳細(xì)操作
調(diào)試沒(méi)毛病后,發(fā)布補(bǔ)丁,參考管理后臺(tái)使用說(shuō)明的step5

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

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

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