从本地代码访问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中的zip)。
我的问题:
使用本机代码直接从APK中访问归档文件的最简单/最有效的方法是什么
我希望有一种类似于libzip的方法,在那里我可以简单地指定一个文件名,然后获得一个包含未压缩数据的缓冲区。
我曾尝试使用libzip直接从APK中打开压缩档案,但结果是空的。。。libzip似乎只会使用目录打开zip文件,而不会从内存中的缓冲区打开(这是我所了解的)。
我想zlib是一个显而易见的选择,但我承认我不知道该怎么做
我还考虑过从APK中复制存档,但我希望尽可能少地浪费空间(大量资产==大型存档)。我也希望避免以单独下载的方式交付资产。
欢迎提出有用的建议或建议。
从你的问题中,听起来你已经无法进入APK中的资产流,所以我直接跳到这里:正如你所说,zlib是一个显而易见的选择。在线内存流中有大量的示例需要处理。例如,内存中解压缩:GZIP。使用zlib,您还可以通过NDK获得它的好处(例如,您不需要自己构建和链接)。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何在c++中从文本文件中逐行读取整数
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 从本地代码访问apk中的压缩文件(从zip中读取zip)
- Libzip-从zip中读取文件内容
- 用于读取Zip标头的Zip库
- 我可以使用wxwidgets读取zip归档文件吗?
- 读取文件在zip不解压缩(c++)