Egret打包Android APP apk熱更新

語言: CN / TW / HK

官網教程:developer.egret.com/cn/github/e… 詳細可看官網教程,我這裡只是記錄下實際操作過程,留個記錄...

主要流程:

1 設定app載入模式

2 設定php檔案

3 每次打新包,只需要上傳伺服器後,再修改php的game_code版本號,當app本地和php的game_code名稱不一致時,就能實現熱更新。

1 設定載入模式

預設為0。設定為1,表示啟動app時,回去請求php,對比“ game_code.zip ”名稱是否一致,不一致,就進行更新。 

image

修改case 1處為自己的php地址。 

image

關於game_code.zip名字

app本地是設定在主檔案中

image

伺服器設定在php裡,具體見2 php檔案部分。

2 php檔案

修改$ip為自己php地址,我php訪問連結是 “http://www.biliking.com/demo/hotupdate/hotupdate.php”,所以設定應該是”http://www.biliking.com/demo/hotupdate/”,不要忘了最後的斜槓。

再次每次釋出新包後,修改 define('CASE_NAME','666')的版本號,我這裡是666。

<?php
define('CASE_NAME', '666');
function startsWith($string, $pattern) {
    return $pattern === "" || strrpos($string, $pattern, -strlen($string)) !== FALSE;
}
$json = array();  //不存在就false;
if (!startsWith(CASE_NAME, 'http://')) {
    $ip = "http://www.biliking.com/demo/hotupdate/";
    $root = $ip  . CASE_NAME ."/game_code_".CASE_NAME. ".zip";
    $update = $ip  . CASE_NAME;
    $json["code_url"] = $root;
    $json["update_url"] = $update;
} else {
    $json["code_url"] = CASE_NAME;
    $json["update_url"] = dirname(CASE_NAME);
}
echo(json_encode($json));
?>
複製程式碼

可以在瀏覽器中直接輸入php訪問地址,檢視返回資訊是否正確。如果格式不正確,是沒法熱更的。

image

注意釋出的新包,需要新建一個版本號一致的資料夾,放在該資料夾內。而不是直接放在php同級目錄下。

image

image

 3 關於熱更新的屎黃**面

有熱更的時候,會有一個存在一小段時間的屎黃**面,初步推斷,那是個填滿介面的進度條。

這個可以不管,因為之前為了防止載入黑屏,會在頂層放一張圖片,這張圖片也會蓋住這個屎黃**面。

4 一些測試

4.1  game_code字尾不變情況下,修改程式碼是否會熱更新?  不會。

4.1 game_code字尾不變情況下,修改圖片是否會熱更新?  不會。

4.2 game_code字尾變化情況下,修改圖片,圖片名稱和大小不變,圖片是否會更新? 會。