0

的背景:

为了使我的应用程序的代码库 (C/C++) 更便携,我想尽量减少使用 android 的原生 AAssetManager 并切换到 libzip 以从 APK 加载资产。我看了一下libzip;将它合并到项目中 - 你瞧 - 我可以使用 libzip 直接从 APK 读取我的文件。

现在,我想混淆我的资产(或者至少让访问它们变得不平凡),所以我想我会将它们打包成一个加密的 zip 存档并将该存档包含在 APK 中(基本上,一个 zip 中的一个 zip )。

我的问题:

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

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

我曾尝试使用 libzip 直接从 APK 中打开压缩档案,但我的结果是空的……看来 libzip 只会使用目录打开 zip 文件,而不是从内存中的缓冲区打开(就我有)。

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

我还考虑过从 APK 中复制存档,但我想浪费尽可能少的空间(大量资产 == 大存档)。我也想避免以单独下载的形式交付资产。

欢迎有帮助的建议或指点。

4

1 回答 1

2

从您的问题来看,您似乎已经无法访问 APK 中的资产流,所以我会直接跳到这一点:正如您所说,zlib 是一个显而易见的选择。网上有大量的例子来处理内存中的流。例如,在内存中解压缩: GZIP。使用 zlib,您还可以通过 NDK 获得它的好处(例如,您不需要自己构建和链接)。

于 2012-12-12T17:13:20.820 回答