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程式碼的問題。
三、使用網路下載更新資源,做一系列的資源比對操作, 然後儲存版本。
這塊程式碼比較多, 但是業務相對來說比較簡單的。
轉載之--