Android OBB/ZIP loading (cocos2dx)

Android OBB/ZIP loading (cocos2dx)

本文关键字:cocos2dx loading ZIP OBB Android      更新时间:2023-10-16

我在处理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变量始终为null(如果我是对的,这意味着它无法加载)。我错过了什么?

提前感谢

(ps:包在那里,我使用的是正确的路径)

所以,我终于解决了我的问题,而且比我想象的要容易得多。我没有修改c++源代码,而是在Cocos2dxHelper java类中找到了一个函数,它就是nativeSetApkPath。在调查了它的使用后,发现Cocos2dx将apk包作为zip文件处理。由于我的obb毕竟只是一个重命名的zip文件,所以我可以毫无问题地使用它。除了声音,我所有的资产都装得很好。这需要另一个快速解决方案。

大部分功劳都归于论坛帖子(http://www.cocos2d-x.org/boards/6/topics/11243)以及Irwin Billing,因为这是我可以在Cocos2dxMusic.java和Cocos2dxSound.java类中进行修改的基础。

此外,我必须确保声音资产没有压缩在zip文件中(根据谷歌提供的文件)。

为此,我在Mac上使用了以下命令:

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

我最后要提到的是文件夹结构。我对资产文件夹进行了复制和压缩,所以在压缩文件中有一个文件夹。这太棒了,因为apk的工作方式是一样的,我不需要做更多的修改。

最后,我修改了源文件,只是不要忘记仔细查看,并更改一些值Cocos2dxHelper.java:http://pastebin.com/RqeYkTkP

Cocos2dx音乐.java:http://pastebin.com/RXjwmEyb

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

顺便说一句,我将ttf字体文件保留在assets/中,因为Cocos2dxTypefaces使用本机代码从AssetManager(也称为apk文件)加载它们。

版本2.x只是我的意见。3.x不工作Cocos2dxHelper.java工作。