熱更步驟
1.建立熱更模組介面
2.替換編譯檔案.beam
3.執行熱更
主要實現方法是使用code**服務函式
code:purge(mod),
清除模組的**,清除並標記為舊版本**
code:load_file(mod).
載入乙個模組
由於模組載入之後存在虛擬機器 可直接替換bin資料夾中的mod.beam檔案 執行跟新
當舊的mod:a-old()執行結束 會切到mod:a-new() 所以不用擔心衝突
運維後台通過tcp請求熱更和引數
由於使用tcp/ip 後台傳參(即熱更模組名稱已轉為二進位制,需進行轉換為原子,且後台執行熱更需要返回結果 如果熱更檔案過多 直接呼叫fun()可能後台需要等待很長時間 所以需要用到spawn)
//入口
ref2 = lib_gm_command:process_binary(socket, binary),
lib_send:send_one(socket, ref2);
//處理二進位制獲取引數(根絕自己和後台的規則處理 此處忽略)
spawn(lib_update,update_file,[filename]),//filename熱更檔案list
<<>>; //即ref2
//熱更操作
updatefilelist = lists:map(fun(e)->
binary_to_atom(e,latin1)
end,re:split(filelist,"\\,")),//二進位制轉原子 分割
load(updatefilelist);//執行熱更
//遞迴迴圈
load() -> ok;
load([filename | t]) ->
code:purge(filename ),
code:load_file(filename ).
info("loaded: ~w", [filename]),
load(t).
war包熱更新 electron 熱更新實現方式
1 electron是乙個外殼 html js css 資料報 按照官方的邏輯,採用electron builder的時候 會直接打包成asar 如果單單是打包html檔案也就算了,關鍵裡面還打包的node module 整整100mb 我只更新個html,不可能對node module重新打包吧。...
關於mui的熱更新。
官方給出的文件講解的很少,所以自己便開始研究了。首先mui中的update.js很簡單。自帶的主要 如下 var server 獲取公升級描述檔案伺服器位址,官方的 為 內容為 官方給出的服務端位址為 內容模板為 另外一種h5 比較複雜,是在js裡面判斷是否需要更新,同時可操作性更強。完整 如下 y...
war包熱更新 專案優化之熱更新
方案 不加固的apk 1 支援熱更新的手機 2 不支援熱更新的手機 加固的apk web為了保證不支援熱更新的手機,也能公升級修復bug,並保證版本號不變,所以每次熱更新,後台都必選管理所有渠道的apk,也即每次熱更新都必須提供所有渠道的apk。每次更新後台補丁時,都需要提供的檔案 1 通用補丁檔案...