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

项目不放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

在这里插入图片描述

前提条件(新手最好看看官方,如果你对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调试了‘
效果如下:
在这里插入图片描述
在这里插入图片描述
然后;
百度云下载zip后,解压zip,
得到两个项目,一个是NativeHotUpdateOld项目(定义为2.0.0版本),一个是NativeHotUpdateNew项目(定义为2.0.1版本),用cocoscreator2.2.2打开即可,两个项目完全相同,只有一个资源的差异,resources/204.png这个图片不同;其他相同
在这里插入图片描述
这里涉及到有些复杂的打包工具链,
-----------现在讲解对NativeHotUpdateNew项目(2.0.1版本)打出热更包,然后放到阿里云Oss中的过程----------
注意是NativeHotUpdateNew项目,
这里是打热更包脚本;
cocos构建发布窗口调节成下面这样,然后再执行exena.py,这是py表示是用命令行进行打包,
然后再执行updateManifest.py即可;这个updateManifest.py是打热更包,打完后,可以找到jsb-defaults/remote-assets就可以了
里面python文件的路径是绝对路径,自己改一改,不然会报错
在这里插入图片描述

version_generator.js里面的资源服务器地址改成自己的阿里云OSS地址,不要和我的一样、
在这里插入图片描述
在这里插入图片描述
然后热更包会打进jsb-default里面的remote-assets文件中,
,
在这里插入图片描述
这个remote-assets直接上传到阿里云Oss中,这就是远程热更包(2.0.1版本的热更包)
在这里插入图片描述
C++层源码在jsb-default文件夹里面,Xcode打开里面的项目MyCocos.xcworkspace
注意,现在打开的是NativeHotUpdateOld项目的下面的Xcode工程
在这里插入图片描述
然后运行工程,直接Run到你的真机iPhone上;
这里简单热更一张图片,直接Run,在iphone上可以看到初始状态
在这里插入图片描述
点击加载spr这个按钮之后(左上角),加载出了一个图片(看右方),这是NativeHotUpdateOld项目的card_m/204图片
在这里插入图片描述

现在进行热更,直接点击立即更新,会出现热更进度信息,之后再点击加载spr按钮,直接就可以看到热更的图片了
这是新项目的同名的card_m/204图片,表明热更了
在这里插入图片描述
Xcode可以查看IOS的沙盒,可以观察对比在热更前后,Documents文件夹的内容的变化,本人链接里面也有分析

PS:理解完这个Demo或者官方的Demo之后,就知道AssetManagerEx这个类的缺陷在哪里,以及官方热更方案不是更好的方案,如果要做更好的方案,可以把Manifest的比对计算放在服务器;而不是客户端比较。客户端只需要下载热更包并设置SearchPath即可;
如果你的项目有上千个图片文件,那么采用官方热更方案性能就会非常低;采用Manifest的比对计算放在服务器方案,就是最佳的;至于如何做Manifest的比对计算放在服务器方案,理解完AssetManagerEx这个类的实现估计大家应该都会发现的了、开发者自行定制即可。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值