我的android应用程序需要另一个NATIVE应用程序可执行文件才能在android之前运行,以便它们可以通过套接字进行通信。 Android应用程序有一个JNI层,用于处理客户端通信。
现在我需要将本机可执行文件与apk文件捆绑在一起,这样当它安装在设备上时,它会被解压缩到手机内存或存储卡中。
我该怎么做? 我尝试将本机可执行文件保存在res / asset和res / raw文件夹中,但它们仍然没有在/ data / data /文件夹中解压缩。
我能找到的一种方法是使用AssetManager,然后在InputStream和OutputStream的帮助下,我可以在第一次运行时将此文件写入设备,然后使用它。但是没有必要在手机内存上手动写它,因为它可能会耗尽内存。 (如果没有存储卡的情况。)
任何人都可以帮我解决这个问题吗?如果有一个选项可以在安装时自动解压缩必要的文件,那就太棒了。
答案 0 :(得分:2)
我该怎么做?
你没有。您可以在首次运行应用程序时自行解压缩。
我能找到的一种方法是使用AssetManager,然后在InputStream和OutputStream的帮助下,我可以在第一次运行时将此文件写入设备,然后使用它。
正确。
但没有必要在手机内存上手动编写它,因为它可能会耗尽内存。
那么你为什么要在第一时间自动解压缩呢?
如果有一个选项可以在安装时自动解压缩必要的文件,那就太棒了。
不,对不起,这是不可能的。
答案 1 :(得分:0)
我们遇到同样的问题......我们正在探索的方向是两个单独的安装 - 第一个是应用程序,第二个是数据应用程序。安装数据应用程序时,它会将二进制文件复制到SD卡。当我们卸载数据应用程序时,它会释放内部存储空间。
我们还没有完全舔过这个,并且很想听到其他的意见,也许会找人帮我们写一些骨架样本申请给我们。
有这么多人(根据我的谷歌搜索),如果这种方法不起作用,我建议我们(或某人)设置通用文件传递Web服务器和通用文件传递Android服务和制作它以极低的成本提供给开发人员。
答案 2 :(得分:0)
这不是OBBs的典型用法,但为什么不使用?{}然后它将是一个与您安装在预定位置的apk分开的文件。它不需要压缩。