Загрузка Android OBB / ZIP (cocos2dx)

У меня проблема с расширениями APK. На стороне Java я мог бы настроить все, что должен был установить, но, похоже, я не могу корректно изменить код на стороне c ++.

Внутри функции CCFileUtilsAndroid :: getFileData:

if (fullPath[0] != '/')
{
CCLOG("GETTING FILE RELATIVE DATA: %s", fullPath.c_str());
pData  = CCFileUtils::sharedFileUtils()->getFileDataFromZip("/storage/sdcard0/Android/obb/com.example.package/main.1.com.example_package.obb", fullPath.c_str(), pSize);
}

Но переменная pData всегда равна нулю (если я прав, это означает, что она не загружается). Что я скучаю по парням?

Спасибо заранее

(PS: пакет там, и я использую правильный путь)

4

Решение

Итак, мне наконец удалось решить мою проблему, и это оказалось намного проще, чем я думал.
Вместо того, чтобы идти с модификациями исходного кода c ++, я нашел функцию в Java-классе Cocos2dxHelper, которая является nativeSetApkPath. После изучения его использования выяснилось, что Cocos2dx обрабатывает пакет apk как zip-файл. Так как мой obb — это всего лишь переименованный zip-файл, я могу использовать его без проблем. Все мои активы были загружены нормально, кроме звуков. Что требует другого быстрого решения.

Большая часть кредита идет на пост форума (http://www.cocos2d-x.org/boards/6/topics/11243) и Ирвину Биллингу, поскольку это было основой, которую я мог использовать для своих модификаций в классах Cocos2dxMusic.java и Cocos2dxSound.java.

Кроме того, я должен был быть уверен, что звуковые ресурсы не были сжаты в zip-файле (согласно документации, предоставленной Google).

Для этого я использовал следующую команду на моем Mac:

zip -rn .ogg:.mp3:.wav assets.zip assets/

Последнее, что я хотел бы упомянуть, это структура папок. Я скопировал и заархивировал папку с ресурсами, так что у меня есть папка внутри моего zip-файла. Что здорово, так как apk работает так же, мне больше не нужно было ничего менять.

Наконец мои измененные исходные файлы, просто не забудьте просмотреть их и изменить некоторые значения
Cocos2dxHelper.java:
http://pastebin.com/RqeYkTkP

Cocos2dxMusic.java:
http://pastebin.com/RXjwmEyb

Cocos2dxSound.java:
http://pastebin.com/1GfDB6jb

10

Другие решения

Просто примечание, я оставляю ttf файлы шрифтов в assets/, так как Cocos2dxTypefaces загрузить их из AssetManager (Ака то apk файл) с использованием собственных кодов.

1

Версия 2.x это только мое мнение.
3.x не работает Cocos2dxHelper.java является.

1
По вопросам рекламы [email protected]