Cocos2dx一步一步实现Android端热更新(C++)

来源:互联网 发布:java string == equal 编辑:程序博客网 时间:2024/05/01 14:59

现在Cocos2dx开发的网游基本上都支持热更新功能,但大多都用LUA语言开发,由于我们项目启动时间较早,开发语言为C++,今天就把自己的项目是怎么一步一步实现热更新的, 分享给大家:

 

平台:android

cocos2dx版本:3.0正式版

 

最初的思路是这样的: 

1,实现游戏资源的热更新。

2,实现代码库的热更新。

 

经最后实验把代码库的热更新也列为游戏资源更新, 这样就更方便了,两者基本上是一样的。

 

一、首先了解Android有一个System.load()方法

调用 System.load 从手机的扩展卡中加载游戏的so文件,具体这个so文件是怎么放到你的扩展卡中, 了解一下如何使用android的文件操作api就懂了。

 

二、cocos2dx中设置资源搜索路径

 

//android端获取资源目录

 std::string jinResourcePath = GameJniHelper::getResourcePath();

 

//重新设置 FileUtils 的 SearchPaths,注意:第一个path为android端发过来的。

 vector searchPaths;
 searchPaths.clear();

 searchPaths.push_back(jinResourcePath);
 vector paths = FileUtils::getInstance()->getSearchPaths();
 for (int i=0; i
 {
  searchPaths.push_back(paths[i]);
 }


 FileUtils::getInstance()->setSearchPaths(searchPaths);

 

以上主要实现在cocos2dx加载资源的时候优先选择扩展卡中的资源, 因为这里的资源才是最新的。

这里注意的是:加载tmx文件的时候, tmx文件必须与纹理的目录问题, 这个是cocos2dx代码的问题。

 

 

三、使用网络下载更新资源,做一系列的资源比对操作, 然后保存版本。

这块代码比较多, 但是业务相对来说比较简单的。


转载之--

萝卜_排骨的博客

0 0