gpt4 book ai didi

android - 从 native 代码访问 apk 中的压缩文件(从 zip 中读取 zip)

转载 作者:行者123 更新时间:2023-11-28 03:26:19 26 4
gpt4 key购买 nike

背景:

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

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

我的问题:

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

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

我已经尝试使用 libzip 直接从 APK 中打开压缩存档,但结果是空的...看来 libzip 只会使用目录打开 zip 文件,而不是从内存中的缓冲区(这是据我所知)。

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

我也考虑过将存档从 APK 中复制出来,但我想浪费尽可能少的空间(大量 Assets == 大存档)。我也想避免将 Assets 作为单独的下载交付。

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

最佳答案

从您的问题来看,您似乎已经无法访问 APK 中的 Assets 流,所以我将直接跳到:如您所说,zlib 是一个显而易见的选择。在网上有无数的例子来处理内存中的流。例如,In Memory Decompression: GZIP .借助 zlib,您还可以通过 NDK 获得它的好处(例如,您不需要自己构建和链接)。

关于android - 从 native 代码访问 apk 中的压缩文件(从 zip 中读取 zip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com