
看了热更新文档,大体上没问题 但其中有个细节疑问,请官方给个说明
如果本地project.manifest和远程project.manifest里的 packageUrl 参数 如果用不同的地址 那么 这次更新的时候 客户端再取得更新列表后 对每个需要更新的文件 是到哪里地址去找远程资源?比如
本地project.manifest的packageUrl是http://ip/update/test1
远程project.manifest的packageUrl是http://ip/update/test2
那么检查出需要有文件更新了 那么这次更新 ,客户端是去 http://ip/update/test1 找对应的资源? 还是去http://ip/update/test2 找对应的资源?
所以 请问 这里是个什么规则?
我是这样做的:
1.先在上层来决定要不要更新
2.获取上次下载的project.manifest(如果首次更新,则从安装包获取)
3.自行构建对象,只保留remoteManifestUrl和assets属性
4.将构建的对象转为str写入上次下载的project.manifest(首次更新跳过此步骤)
5.调用AssetsManager的loadLocalManifest、update
也就是说,本机的manifest只需要remoteManifestUrl和assets就行了,其它都是多余的,远程的就必须要assets、packageUrl和version(我是写死的9999,用不上,但必须要)
这么说应该明白了吧,远程的packageUrl决定了资源下载地址
其实自己去试才能检验真理,你本机和远程的 packageUrl用不一样的,然后内容也不一样,更新一下看看不就知道了嘛
上面我回复你的都是我亲测的,有时候自己试一下,比看源码或问人来得快
没错
直接参考官方的热更demo吧,
里面有教你怎么str写入loadManifest,
楼上已经说的很明白了,需要你手动更改url