繁体   English   中英

从本机代码访问apk中的压缩文件(从zip内部读取zip)

[英]Accessing a compressed file in an apk from native code (read a zip from inside a zip)

的背景:

在尝试使我的应用程序的代码库(C / C ++)更具可移植性时,我想尽量减少使用android的本机AAssetManager并切换到libzip以从APK加载资源。 我看了一下libzip; 将它合并到项目中 - 并且 - 看哪 - 我可以使用libzip直接从APK中读取我的文件。

现在,我想混淆我的资产(或者至少让它们访问它们非常重要),所以我想我会将它们打包成一个加密的zip存档并在APK中包含该存档(基本上是一个zip压缩的邮政编码) )。

我的问题:

使用本机代码直接从APK中访问存档中文件的最简单/最有效的方法是什么?

我希望有类似于libzip的方法,我可以简单地指定一个文件名,然后获得一个带有未压缩数据的缓冲区。

我尝试使用libzip直接从APK中打开压缩存档,但我现在空了......看来libzip只会使用目录而不是内存中的缓冲区打开一个zip文件(这就是我有)。

我认为zlib是一个明显的选择,但我承认我不知道如何去做。

我还考虑过从APK复制存档,但我想浪费尽可能少的空间(很多资产==大档案)。 单独下载资产也是我想避免的。

欢迎提供有用的建议或指示。

从你的问题来看,听起来你已经过去了你的APK中的资产流,所以我会跳到这个:正如你所说,zlib是一个明显的选择。 网上有大量的例子可以处理内存流。 例如, In Memory Decompression:GZIP 使用zlib,您还可以通过NDK获得它的好处(例如,您不需要自己构建和链接)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM