OBB/ZIP loading

Hey guys!

I have a problem dealing with the APK expansions. On Java side, I could set up everything I supposed to set, but it seems I can’t modify the code properly on c++ side.

Inside the CCFileUtilsAndroid::getFileData function:

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);
}

But the pData var is always null. What am I missing guys?

Many thanks in advance

(ps: the package is there, and I’m using the right path)

Still, any help would be appreciated.
Gonna try to do it today, if something works out I’ll keep this thread updated with what I did for later reference and for the others having trouble dealing with this.

Copy-pasted my answer from StackOverflow, since I could answer it for myself.

So, I finally managed to resolve my issue, and it was way easier than I thought. Instead of going with the c++ source modifications, I found a function in the Cocos2dxHelper java class which is the nativeSetApkPath. After investigating the use of it, it turned out that Cocos2dx handles the apk package as a zip file. Since my obb is just a renamed zip file after all, I could use it without any problem. All of my assets were loaded fine, except the sounds. Which requires another quick fix.

Most of the credit goes to a forum post (http://www.cocos2d-x.org/boards/6/topics/11243) and to Irwin Billing, since that was a base I could use for my modifications in the Cocos2dxMusic.java and Cocos2dxSound.java classes.

Also, I had to be sure that the sound assets were not compressed in the zip file (according to the documentations provided by Google).

For that I used the following command on my Mac:
zip -rn .ogg:.mp3:.wav assets.zip assets/

The last thing I’d like to mention is the folder structure. I copypasted and zipped the assets folder, so I have a folder inside my zip file. Which is great, since the apk works the same way, I had to do no more modifications.

Finally my modified source files, just dont forget to go through it, and change some values
Cocos2dxHelper.java: http://pastebin.com/RqeYkTkP
Cocos2dxMusic.java: http://pastebin.com/RXjwmEyb
Cocos2dxSound.java: http://pastebin.com/1GfDB6jb

hi Vandroiy,
I’m facing with same problem! I follow to your help but i can’t load my obb. Could you give me some step to fix this problem.
I can’t load obb in cocos2dx
I set:
Cocos2dxHelper.nativeSetApkPath(Environment.getExternalStorageDirectory() + “/Android/obb/com.example.package/main.2.com.example.package.obb”);
But i failure to load obb. May i miss something? Please help me for this issue!
Hope your help!