写了一个超长的热更新文档,欢迎反馈

在1.4.2中可以使用下面的方法。

var data = jsb.fileUtils.getDataFromFile(path);
var curMD5 = md5(data);
if(curMD5 == asset.md5){
cc.info(‘MD5 verify success!’);
return true;
}
else{
cc.info(‘MD5 verify fail,path a:’ + path + ‘,path b:’ + asset.path + ‘,md5 a:’ + curMD5 + ‘,md5 b:’ + asset.md5);
return false;
}
具体的MD5算法附件中有。
md5.rar (3.9 KB)

1赞

下载version.manifest、project.manifest和需要更新的文件都没有加入版本信息,如何保证从cdn下载的是最新版本的文件呢?

getSearchPaths() 获取的默认路劲为空?
@panda

目前还不支持 url 后缀

对,Manifest 中的 searchPath 是相对 storage path 的相对路径,默认情况下,storage path 本来就是需要被添加到 search path 中的,只是你可以附加更多的子 search path,这个功能并不常用。

源码会把这个文件加入下载失败列表,如果下载回来的md5还是不一样。。。不会死循环么?

@panda
如果手机空间不足,热更失败会有什么事件抛出呢?
缓存中的文件有没有可能被用户(用垃圾清理工具)清理掉呢?
谢谢!

每次重试都是用户控制的,如果次数太多,可以放弃重试

那更新会失败。缓存中的文件是有可能被清理的。

1.5 正式版 在 main.js 添加的
if (cc.sys.isNative) {
var hotUpdateSearchPaths = cc.sys.localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
}
}
发布 web 版时会报错,
Uncaught ReferenceError: cc is not defined
at main.js:5
at main.js:175
我看了下,你的 main.js 和 1.5的main.js 有很大的不同

感谢你的回答

我有个疑问
如果我想将所有除开main.js 之外的所有资源与代码都加入热更。正确的做法是怎样的。

项目里有多本书需要动态下载(每本书有多个场景,场景、图片、音频,spine均按照目录方式组织),现在用的多个manifest方式,静态资源如图片、音频、spine等压缩成了zip包。可是res/import下的目录怎么和场景对应起来的呢?怎么可以识别出哪些目录是某本书的资源呢?

1赞

同问同问

期待asset bundle , @panda 大大加油

@panda 大大,接下来的版本,热更新会有什么更新吗?

使用 1.5.1.beta2 版本, 热更新时, 发现下载数据的百分比不正确. 请教一下,

case jsb.EventAssetsManager.UPDATE_PROGRESSION:
var percent = event.getPercent() || 0;

这个 percent 是指当前正在下载文件的进度吗? 如果我想获取总下载进度, 应该如何处理呢?

@panda 请指教!

应该是总进度,最新版是0到1。以前的版本是0到100。你试试

在ccc 1.4版本中,生成热更包。在手机上热更新后,发现只有场景和资源热更新而代码没有热更新到。想问有哪些原因会出这种情况呢?

您好,现在热更新,能过苹果的审核吗?

应该过不了,我们原生应用都被下架了