我使用libzip读取本机代码中的APK内容.
仅针对libzip功能“消失”的资产/声音/语音文件夹.
> libzip仍然可以看到其他文件.
>我仍然可以在项目文件夹的资产/声音/语音中看到它.
>我做了很多次清洁.
>我仍然可以从bin文件夹解压缩APK文件,然后看到所有必需的文件. (包括资产/声音/语音文件夹中的文件)
我添加了小的日志记录命令,它不打印资产/声音/语音文件夹中的文件.所有其他文件都存在.
int inum = zip_get_num_files(apkzip);
for(int i = 0; i < inum; i++){
const char * name = zip_get_name(apkzip, i, 0);
__android_log_print(ANDROID_LOG_INFO,"FILEZIP", "zip: %s", name);
}
我不知道哪一步错了.用我的libzip无法读取的新格式的eclipse压缩ZPK吗?或可能是原因.
解决方法:
这不是libzip的答案,但是为什么您必须使用libzip在NDK应用程序中读取apk文件?在Android NDK中,您可以使用AAsset API从apk获取文件.看一下“ How To Get File In Assets From Android NDK”.
已编辑
It is not available in android-5 that I still use
好.那Cocos2d-x’s ZipFile呢?它基于Minizip.
如何从cocos2dx/platform/android/CCFileUtilsAndroid.cpp开始使用ZipFile
s_pZipFile = new ZipFile(resourcePath, "assets/");
pData = s_pZipFile->getFileData(fullPath.c_str(), pSize);