【问题标题】:Android OBB/ZIP loading (cocos2dx)Android OBB/ZIP 加载 (cocos2dx)
【发布时间】:2013-09-05 13:19:57
【问题描述】:

我在处理 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:包在那里,我用对了路径)

【问题讨论】:

    标签: android c++ android-ndk cocos2d-x apk-expansion-files


    【解决方案1】:

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

    【讨论】:

    • 自我注意:确保您的 zip 文件包含 'assets' 文件夹作为 zip 中的根目录,而不是整个路径结构 /$HOME/path/to/proj/assets/
    • 嗨 LugaidVandroiy.. 我正在尝试做同样的事情,但正在使用 Cocos2d。能否请您指出哪个是 Cocos2d 中 Cocos2dxHelper.java 对应的文件。我对 Cocos2d 很陌生,对此知之甚少。谢谢
    • 嘿!据我所知,Cocos2d-x 与原来的 Cocos2d 和 Cocos2d-iphone 是一个不同的项目。您使用的是哪个版本?也许我可以帮忙。
    • @LugaidVandroiy .. 我正在使用 Cocos2d for android。我可以弄清楚在 contentHelper.java 中,我需要正确地 setExternalLoader()。但我做不到。如果你能在这方面给我一些指示或帮助,我会非常感激。再次感谢
    • 我用你的答案工作了几个小时,我想建议大家检查AndroidManifest.xml:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 在其他地方没有任何效果。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • cocos2dx 3.x 中有这个解决方案吗?请帮忙。
      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 2013-05-14
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多