如何在安装.apk时将.apk中的某些文件解压缩到/ data / data / <package>文件夹?</package>

时间:2010-10-12 10:05:43

标签: android unzip

我的android应用程序需要另一个NATIVE应用程序可执行文件才能在android之前运行,以便它们可以通过套接字进行通信。 Android应用程序有一个JNI层,用于处理客户端通信。

现在我需要将本机可执行文件与apk文件捆绑在一起,这样当它安装在设备上时,它会被解压缩到手机内存或存储卡中。

我该怎么做? 我尝试将本机可执行文件保存在res / asset和res / raw文件夹中,但它们仍然没有在/ data / data /文件夹中解压缩。

我能找到的一种方法是使用AssetManager,然后在InputStream和OutputStream的帮助下,我可以在第一次运行时将此文件写入设备,然后使用它。但是没有必要在手机内存上手动写它,因为它可能会耗尽内存。 (如果没有存储卡的情况。)

任何人都可以帮我解决这个问题吗?如果有一个选项可以在安装时自动解压缩必要的文件,那就太棒了。

3 个答案:

答案 0 :(得分:2)

  

我该怎么做?

你没有。您可以在首次运行应用程序时自行解压缩。

  

我能找到的一种方法是使用AssetManager,然后在InputStream和OutputStream的帮助下,我可以在第一次运行时将此文件写入设备,然后使用它。

正确。

  

但没有必要在手机内存上手动编写它,因为它可能会耗尽内存。

那么你为什么要在第一时间自动解压缩呢?

  

如果有一个选项可以在安装时自动解压缩必要的文件,那就太棒了。

不,对不起,这是不可能的。

答案 1 :(得分:0)

我们遇到同样的问题......我们正在探索的方向是两个单独的安装 - 第一个是应用程序,第二个是数据应用程序。安装数据应用程序时,它会将二进制文件复制到SD卡。当我们卸载数据应用程序时,它会释放内部存储空间。

我们还没有完全舔过这个,并且很想听到其他的意见,也许会找人帮我们写一些骨架样本申请给我们。

有这么多人(根据我的谷歌搜索),如果这种方法不起作用,我建议我们(或某人)设置通用文件传递Web服务器和通用文件传递Android服务和制作它以极低的成本提供给开发人员。

答案 2 :(得分:0)

这不是OBBs的典型用法,但为什么不使用?{}然后它将是一个与您安装在预定位置的apk分开的文件。它不需要压缩。