问题一:
文档说:
{
Manifest 格式
这里需要注意的是,remote 信息(包括 packageUrl、remoteVersionUrl、remoteManifestUrl)是该
manifest 所指向远程包信息,也就是说,当这个 manifest 成为本地包或者缓存 manifest
之后,它们才有意义(偷偷透露个小秘密,更新版本时更改远程包地址也是一种玩法呢)
}
我有版本A,对应的本地Manifest->remoteVersionUrl为: urlA。
检查更新,我到urlA地址获取版本,和本地比对,检查到服务器有版本B,版本B里面的Manifest 按照小秘密,给remoteVersionUrl改为urlB,以后更新会到urlB去检查更新了,更新到C,D。。。。
用这个小秘密以后,我想直接从A更新到C,就要分两步了。与设计设计目标和基本原理.
{
Cocos 的热更新机制通过直接比较最新版本和本地版本的差异来生成差异列表并更新。
}
有点违背啊。
问题二:
我线上现在跑着一个版本A,现在我想更新了,我是不是需要给代码资源和Manifest修改下。
但是,我上线之前,需要测试一下,按目前的方案,修改了以后,会影响线上玩家,没法测试。
你可能说我可以用debug测试(和release版本连接地址不一样),但是我就想测试正式环境,用线上的包测试。就头疼了,要想各种办法绕开。
我觉得理想的方案是链接地址可以拼接,比如:http://xxxx/100/ http://xxx/101 。每个版本的更新包都上传服务器,想更新到哪个版本,直接读取服务器上设置版本,下载对应目录文件。
但是现在的更新模块,就是各种为难你去自定义Manifest。
要自定一个Manifest,必须读取本地下载的Manifest
jsb.fileUtils.getStringFromFile(this._storagePath + ‘/project.manifest’);
如果有,则用本地下载的,没有,就用自己定义的。(如果你直接自定义的设置,平台会再次检查你自定义的和本地下载的Manifest版本,如果本地下载的Manifest比较新,就会用他覆盖掉你设置的。)
最后把修改好的Manifest设置到AssetsManager里。 我觉得你这里能不能提供接口甩出来啊,要改个东西,不明事理的人改起来好痛苦啊。