1. 程式人生 > >Cocos2dx一步一步實現Android端熱更新(C++)

Cocos2dx一步一步實現Android端熱更新(C++)

現在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程式碼的問題。

三、使用網路下載更新資源,做一系列的資源比對操作, 然後儲存版本。

這塊程式碼比較多, 但是業務相對來說比較簡單的。

轉載之--