Lug*_*oiy 4 c++ android android-ndk cocos2d-x apk-expansion-files
我在处理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);
}
Run Code Online (Sandbox Code Playgroud)
但是pData var总是为null(如果我是对的,这意味着它无法加载).我想念的是什么人?
提前谢谢了
(ps:包在那里,我正在使用正确的路径)
Lug*_*oiy 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/
Run Code Online (Sandbox Code Playgroud)
我要提到的最后一件事是文件夹结构.我复制并压缩了资产文件夹,所以我的zip文件中有一个文件夹.哪个好,因为apk工作方式相同,我不得不做更多修改.
最后我修改的源文件,只是不要忘了去通过它,并改变一些值Cocos2dxHelper.java: http://pastebin.com/RqeYkTkP
Cocos2dxMusic.java: http://pastebin.com/RXjwmEyb
Cocos2dxSound.java: http://pastebin.com/1GfDB6jb