对于Creator3.0 的一堆小问号??

问题一
之前一直使用的是jsb.AssetManager 来做热更新,说下我遇到的问题
每次启动时热更新的地址都不确定,所以project.manifest 里面记录的是相对路径(不带http://xxx.com)
的,想要这么做就得在c++中修改代码才能实现这个功能
首次热更新时我会去下载一个zip包然后解压,想实现这个功能,还要去修改decompressDownloadedZip这个方法
我从creator版本1.9.6 2.1.3 - 2.2.2 - 2.4.3 一路升级过来 每次都要去修改一遍这些东西,超级麻烦!!!
其实功能就两个
一:可以动态修改packageUrl 地址
二:可以在js灵活调用decompressDownloadedZip解压缩
就这两个东西这几个版本都没有提供,然后3.0我发现还是没有提供这些方法
所以看了下assetManager.downloader 想用这个来自己做热更新 但是问题来了 解压缩
decompressLocalZip 这个方法还是没有提供 但至少可以解决动态修改地址的问题
想问下引擎大佬们 assetManager.downloader这个方法实现自己的热更新逻辑是否可行?有没有我没考
虑到的问题? js想要解压缩到指定目录有没有其他方式?decompressLocalZip 这个方法能否默认绑定到JSB?

问题二
构建的时候选项只有link 没有default ,看官方文档构建目录和实际构建的不一致是这么写的 ( 注意 :这部分内容暂时还未更新到最新版,请以实际构建结果为准)
以前还有个build-template来定制构建内容,现在构建出来是引用编辑器目录的,也就是说现在如果我修改了例如js_audio_AudioProfile_get_name.cpp 这样的文件就只能放到编辑器目录吗?能放到项目目录吗?官方文档说(自定义构建模板平台支持表 原生平台暂不支持使用)这样团队合作岂不是要每人都要修改一份到她们的编辑区目录吗?没法使用git来管理
总结一下 升级3.0几天时间下来 好处没体验到多少 限制多了不少 ,搞得一头雾水,或许是我理解错了?或者是文档有说应该怎么做 我没发现?如果有知道的希望不吝告知!

你好,目前原生平台已经没有 default 目录了,在 3.0 Preview -> 3.0.0 正式版做了一次关于原生目录的调整,官方 3.x 的升级指南确实还没有更到最新。
目前最新的目录介绍在这里

至于一些原生公共代码的方式位置文档确实尚未补充,目前原生平台构建后会在项目目录下生成一个 native 文件夹,这个文件夹是和项目本身一起进入 git 管理的,可以解决一些定制需求。

JSB绑定的自定义方法放到哪个目录啊

下个版本中 能否增加这两个功能
一:可以动态修改packageUrl 地址 Manifest.h 里增加一个 setPackageUrl
二:可以在js灵活调用decompressDownloadedZip解压缩 (参数是 zip路径,目标路径)
之前每个版本都是修改的decompressDownloadedZip这个方法
加上这两个功能热更新就会灵活很多

这个功能是你自己的实现

走热更新模块,你应该使用 loadCustomManifest 的方式去实现,热更新范例有演示。
https://github.com/cocos-creator/tutorial-hot-update/blob/master/assets/hotupdate/HotUpdate.ts#L257

下载zip包的逻辑是自己实现的 下载下来之后需要解压 只是想官方把解压的方法也公开出来 不然需要用到解压的功能还要去自己绑定JSB 解压的方法我认为是个很常用的功能

loadCustomManifest 这个我之前用过 加载本地的manifest的作用不是为了下载远程的manifest吗 并且和远程做md5比对 问题是远程下载下来的manifest 的packageUrl也是空的 需要在运行时填写具体地址

packageUrl 是给更新文件使用的,不是用来下载 manifest 的,不会为空的

本地加载的manifest这个不是问题 问题就是getRemoteManifest 返回的是一个Manifest对象 这个对象只能get 不能set

如果想要packageUrl不为空 就必须在生成project.manifest 的时候填写packageUrl这个字段 这就是确定了热更新地址,
我的意思是在生成project.manifest 的时候 这个packageUrl 的值是空的 因为不确定未来热更新地址是什么
你说的packageUrl 不会为空前提就是要确定一个固定的热更新地址

1 加载本地manifest 设置热更新地址 通过这个地址下载远程的manifest 做比对
2 成功下载到远程manifest 如果需要更新 会使用远程的packageUrl 下载具体文件 此时远程packageUrl地址没有办法设置

可能是我表达的不够清楚

你这个没理解楼主的意思!
在做项目过程中,因为热更地址不可能写死在文件里,为了防止热更地址域名无效或者想切换一个更好的线路,因此热更地址可能会配置很多条,因此要去动态设置这个热更地址,但目前你们没给packageUrl去设置的方法,导致使用起来很不方便!
你们团队完全没考虑热更的实际使用情况!

可以存到 native 目录的子目录中, 比如 native/custom/

1赞

你好,我们目前热更新也希望改成用zip方式来实现,想问下 decompressDownloadedZip 这个方法绑定到JSB上具体如何实现?感觉这个方法还是硬需求,不知道为什么官方不愿意自动绑定到JSB上

每一次升级引擎我们都自己改一次native层asset manage实现(没有考虑兼容性,就没提交了)
还是期待官方来支持API设定热更地址 +1

我有个方案,通过服务器来修改远程packageUrl

1赞