关于热更新问题

热更新,我使用AssertManager,有以下问题:
更新下载zip包解压之后,解压文件怎么放到原来的游戏包里?
在win下,替换和添加文件都没问题,因为游戏没有打包,但是在真机下该咋整?
游戏apk包安装之后在data/app文件夹下找到了apk包,游戏跑的时候也跑的这个包,这个包里的文件可以改动吗?
求帮助!!!!!!!!!!!!

游戏打包成apk之后如何进行热更新?求大神解答

包里的文件是不可以改动的。
Android也好,ios也好,在系统可写部分都是有空间的。
热更新的部分是要放在可读写的地方,可以通过 CCFileUtils::sharedFileUtils()->getWritablePath() 来获取它。

热更新的部分,我是放到可读写区域了,我也是用你说的方法获取的,但是这个路径仅仅是存放我本地文件的地方啊,我的游戏脚本都在apk里呢,我要更新脚本,必然要修改apk里的脚本啊。难道说我的更新思路不对么?

你的思路有问题……加载路径是优先级的,先加载更新的路径,如果没有,才会去加载apk里面的……如果你想直接修改apk,而不是存有两个版本的文件,这还真的没办法了,除非发布一个新的apk更新,不过这样子就不需要assetmanager了说……

修改apk里的脚本是做不到的。每修改一次apk,都要重新生成,并下载安装的。这不是热更新。是下载更新。
热更新的文件,是要放到可写区域,这样每次更新,替换可写目录的同名文件,增加新文件,这样更新就会起效。

比如说我游戏里的data.lua脚本需要更新,用AssertManager下载补丁包,解压出来data.lua文件后就放在CCFileUtils::sharedFileUtils()->getWritablePath()路径下,和apk中的文件位置一致,apk中的data.lua没有修改,apk一点没动
apk路径与更新文件路径如下:
data/app/xxxx.apk
data/data/com.app.game.xxxx(这个路径是通过CCFileUtils::sharedFileUtils()->getWritablePath()得到的)
那么在启动游戏的时候,在游戏运行期间,如果我用到data.lua文件了,就会优先去搜索下面那个路径吗?如果是的话,就太感谢你了,我的问题就解决了,如果不是,我继续研究。
求告知:6:

又有一个新的问题,这个路径的优先级是我自己设置的还是Android系统自带的路径优先级?

求解答:6::6::6:

哎,楼上回答问题都没有说到点子上,真让人捉急

http://www.th7.cn/web/html-css/201308/12205.shtml

谢谢指点,增加搜索路径是吧。
是这样的,我的所有游戏代码都是用脚本写的,C++只提供了一个运行入口,就像Lua例子中的HelloWorld一样。
也就是说如果我在C++代码里加了两个搜索路径,热更新目录的路径优先级比apk路径的优先级要高,那么在lua脚本中跑的时候,也会去优先搜索热更新目录吗?我的意思是在C++代码中优先设置好搜索路径,在脚本中跑游戏的时候,这个用到的脚本文件和资源文件还会按照路径的优先级来进行搜索吗?如果是的话,我的问题就解决了,不是的话,我就继续研究了。

是的,你的问题应该已经解决了。

我用的js,在C++或者js里设置优先级都可以。Lua不知道啦~应该可以,你可以试下。

这个问题直接也折腾我好几天 网上看了一些资料 就是要在启动游戏前把你更新的资源路径加到你的搜索路径里面去就ok了

有demo吗?能分享一下吗?谢谢了