官网教程:http://developer.egret.com/cn/github/egret-docs/Native/native/hotUpdate/index.html
详细可看官网教程,我这里只是记录下实际操作过程,留个记录...
主要流程:
1 设置app加载模式
2 设置php文件
3 每次打新包,只需要上传服务器后,再修改php的game_code版本号,当app本地和php的game_code名称不一致时,就能实现热更新。
1 设置加载模式
默认为0。设置为1,表示启动app时,回去请求php,对比“ game_code.zip ”名称是否一致,不一致,就进行更新。
修改case 1处为自己的php地址。
关于game_code.zip名字
app本地是设置在主文件中
服务器设置在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访问地址,查看返回信息是否正确。如果格式不正确,是没法热更的。
注意发布的新包,需要新建一个版本号一致的文件夹,放在该文件夹内。而不是直接放在php同级目录下。
3 关于热更新的屎黄色界面
有热更的时候,会有一个存在一小段时间的屎黄色界面,初步推断,那是个填满界面的进度条。
这个可以不管,因为之前为了防止加载黑屏,会在顶层放一张图片,这张图片也会盖住这个屎黄色界面。
4 一些测试
4.1 game_code后缀不变情况下,修改代码是否会热更新? 不会。
4.1 game_code后缀不变情况下,修改图片是否会热更新? 不会。
4.2 game_code后缀变化情况下,修改图片,图片名称和大小不变,图片是否会更新? 会。