一 , 使用的更新方案

https://gitee.com/jjflora/egret-hotupdate

 此更新方案, 很像Cocos Creator的更新方案 , 我们看看前端H5的demo目录, 如下

Egret之Android热更新(Native高级)_Egret

二,准备工作

    1, 先使用Egret Launcher打包一个Android的项目

    2, 对version_gennerator.js进行配置 , 主要配置点如下

            a, 修改工程下version_generator.js内的相关配置,将src 和 dest指向Android工程内的assets路径。如下图所示

Egret之Android热更新(Native高级)_Android_02

    3,重点来了

            a, 使用命令 : node version_generator.js -v 1.0.29 , 最终会在src目录下生成 version.manifest和project.manifest 两个文件 . 如下图所示

Egret之Android热更新(Native高级)_热更新_03

4,使用AS打包apk文件 , 安装到夜神,如下

Egret之Android热更新(Native高级)_热更新_04

三, 测试

            Ⅰ, 原生包

                    略 ... , 请观看准备工作

            Ⅱ,更新包

                    1,修改一下代码 , 加入一个对勾标志 (下一版本) , 如下图

Egret之Android热更新(Native高级)_Egret_05

                2, 重新使用Egret Launcher 打包Android项目

                3, 再次运行 node version_generator.js -v 1.1.0 命令

            Ⅲ, 资源服务器

                1, 资源服务器的结构:


    Egret之Android热更新(Native高级)_热更新_06

            2, 注意地址不要写 localhost 或 127.0.0.1 Android端拿不到资源

            3, 主要10100 是将1.1.0的所有.替换成了0

Egret之Android热更新(Native高级)_热更新_07

四, 结果

Egret之Android热更新(Native高级)_Egret_08

五, 优化

2个方案 

①, 需要一个服务器告知客户端目前远端最新的版本

②,Android 自己拿到远端最新的version.manifest和自己本地的version.manifest的版本进行对比, 以确定是否要更新. ( Cocos Creator目前的处理方案 )