4

我在处理 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 var 始终为空(如果我是对的,这意味着它无法加载)。我想念什么?

提前谢谢了

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

4

3 回答 3

10

所以,我终于设法解决了我的问题,而且比我想象的要容易得多。我没有使用 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 文件中(根据 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 _

于 2013-09-11T11:22:47.783 回答
1

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

于 2014-05-16T03:12:04.927 回答
1

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

于 2014-09-11T02:47:07.067 回答