У меня проблема с расширениями 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: пакет там, и я использую правильный путь)
Итак, мне наконец удалось решить мою проблему, и это оказалось намного проще, чем я думал.
Вместо того, чтобы идти с модификациями исходного кода 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
Просто примечание, я оставляю ttf
файлы шрифтов в assets/
, так как Cocos2dxTypefaces
загрузить их из AssetManager
(Ака то apk
файл) с использованием собственных кодов.
Версия 2.x
это только мое мнение.
3.x
не работает Cocos2dxHelper.java
является.