2

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

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

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

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

谁能帮助我如何实现这一目标?如果有一个选项可以在安装时自动解压缩必要的文件,那就太好了。

4

3 回答 3

2

我该怎么做呢?

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

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

正确的。

但是没有必要将它手动写入手机内存,因为它可能会占用内存。

那你为什么一开始就希望它在那里自动解包呢?

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

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

于 2010-10-12T11:28:03.750 回答
0

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

我们还没有完全完成这个,并且很想听到其他意见,也许可以通过为我们编写几个骨架示例应用程序来找到帮助我们的人。

有这么多人在这条船上(基于我的谷歌搜索),如果这种方法不起作用,我建议我们(或某人)设置通用文件传递 Web 服务器和通用文件传递 Android 服务,并使其可用于开发人员以非常低的成本。

于 2011-03-31T19:51:46.050 回答
0

这不是OBB的典型用法,但为什么不使用呢?然后,它将是一个与安装在预定位置的 apk 分开的文件。它不必被压缩。

于 2014-02-13T13:11:57.883 回答