CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

07-04 1400阅读

项目不放Github了,放在百度云;比较大

*注:项目里面的代码完全来源于Cocos官方公开发布的热更Demo,这里只是个人的一些更改,不会涉及任何第三方代码的版权;

百度云完整Demo链接(里面包含完整的jsb-defaults和两个creator2.2.2项目[1.52G]):

链接: https://pan.baidu.com/s/1FGtV3iUtb–9gcHrCGVRzQ?pwd=v4ps 提取码: v4ps

这个链接会对这个项目的热更底层源码做最底层的分析(C++层AssetManagerEx这个类相关,以及IOS

下,cc.loader.loadres底层调用的各种流程)

永久有效的链接:

https://boardmix.cn/app/share/CAE.CLfz5Q0gASoQgEYBrV4lDuJIEK2Fn3dXFTAGQAE/9AzkJn,

点击链接加入boardmix中的文件「Creator2.x-Native热更【Public】」(https://boardmix.cn/app/share/CAE.CLfz5Q0gASoQgEYBrV4lDuJIEK2Fn3dXFTAGQAE/9AzkJn%EF%BC%8C)

注意,jsb-default这个文件夹比较大,本人没放在Github,其实就是Creator2.2.2打Android和IOS包之后,自己也可以打包,编译后放在项目首目录中即可,或者直接下载下面百度云整个工程,里面是已经在Xcode上编译好的Demo就可以了,免得费事

浏览一下关于CocosCreator原生热更的官方的文章和Demo。里面有些重要的操作介绍

https://docs.cocos.com/creator/3.8/manual/zh/advanced-topics/hot-update-manager.html

本项目是官方的这个below-2.3.3版本的Demo例子进行一些改进,方便学习,选择below-2.3.3版本即可。

更高版本的原理也是一样的;(包括CocosCreator2.4.x或者3.x原理基本相似,不要最好先搞懂2.4.x以下,后面都容易理解)

https://github.com/cocos-creator/cocos-tutorial-hot-update

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

前提条件(新手最好看看官方,如果你对Native热更很熟悉,直接看链接浏览浏览思路即可)

1:一定的IOS开发基础,熟悉Xcode(链接里面的分析主要针对IOS平台,因为Creator原生-Http服务对两个平台进行了封装),

2:对IOS-http服务的API,比如NSURLSession体系比较熟悉之后再看本Demo,否则不会看懂

4:对V8引擎的重要API和JavaScript的交互都最好比较熟悉,比如js对象和c++对象如何连接(cocos2dx-lite层)

5: 务必买一个阿里云对象存储服务(就几块钱),或者自己搞一个注册和备案了域名的资源服;用OSS浏览器打开你自己的slot;

6:对Creator2.2.x打包操作最好比较熟悉

7:熟悉谷歌浏览器,Xcode上进行C++和JS的交叉混合调试(这个很重要)

打开Xcode,运行Demo,谷歌浏览器上输入下面网址即可查看log(基于WebSocket的调试原理)

IOS用:devtools://devtools/bundled/inspector.html?v8only=true&ws=192.168.0.103:6086/00010002-0003-4004-8005-000600070008

Android用:devtools://devtools/bundled/js_app.html?v8only=true&ws=192.168.0.100:6086/00010002-0003-4004-8005-000600070008

ws=192.168.0.103:6086表示自己iphone的IP

ws=192.168.0.100:6086表示自己Adnroid手机的ip

目前用IOS的那个即可;自己手动改自己的iphone的ip到ws=192.168.0.103:6086。

并且Mac和iphone同一个wifi之下,就可以进行Native下的js调试了‘

效果如下:

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

然后;

百度云下载zip后,解压zip,

得到两个项目,一个是NativeHotUpdateOld项目(定义为2.0.0版本),一个是NativeHotUpdateNew项目(定义为2.0.1版本),用cocoscreator2.2.2打开即可,两个项目完全相同,只有一个资源的差异,resources/204.png这个图片不同;其他相同

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

这里涉及到有些复杂的打包工具链,

-----------现在讲解对NativeHotUpdateNew项目(2.0.1版本)打出热更包,然后放到阿里云Oss中的过程----------

注意是NativeHotUpdateNew项目,

这里是打热更包脚本;

cocos构建发布窗口调节成下面这样,然后再执行exena.py,这是py表示是用命令行进行打包,

然后再执行updateManifest.py即可;这个updateManifest.py是打热更包,打完后,可以找到jsb-defaults/remote-assets就可以了

里面python文件的路径是绝对路径,自己改一改,不然会报错

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

version_generator.js里面的资源服务器地址改成自己的阿里云OSS地址,不要和我的一样、

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

然后热更包会打进jsb-default里面的remote-assets文件中,

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

这个remote-assets直接上传到阿里云Oss中,这就是远程热更包(2.0.1版本的热更包)

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

C++层源码在jsb-default文件夹里面,Xcode打开里面的项目MyCocos.xcworkspace

注意,现在打开的是NativeHotUpdateOld项目的下面的Xcode工程

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

然后运行工程,直接Run到你的真机iPhone上;

这里简单热更一张图片,直接Run,在iphone上可以看到初始状态

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

点击加载spr这个按钮之后(左上角),加载出了一个图片(看右方),这是NativeHotUpdateOld项目的card_m/204图片

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

现在进行热更,直接点击立即更新,会出现热更进度信息,之后再点击加载spr按钮,直接就可以看到热更的图片了

这是新项目的同名的card_m/204图片,表明热更了

CocosCreator2.2.x以及原生平台(Android&IOS)的热更方案的底层源码最彻底的分析,并开源更好的学习Demo

Xcode可以查看IOS的沙盒,可以观察对比在热更前后,Documents文件夹的内容的变化,本人链接里面也有分析

PS:理解完这个Demo或者官方的Demo之后,就知道AssetManagerEx这个类的缺陷在哪里,以及官方热更方案不是更好的方案,如果要做更好的方案,可以把Manifest的比对计算放在服务器;而不是客户端比较。客户端只需要下载热更包并设置SearchPath即可;

如果你的项目有上千个图片文件,那么采用官方热更方案性能就会非常低;采用Manifest的比对计算放在服务器方案,就是最佳的;至于如何做Manifest的比对计算放在服务器方案,理解完AssetManagerEx这个类的实现估计大家应该都会发现的了、开发者自行定制即可。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]