【问题标题】:How to unpack some files from .apk to /data/data/<package> folder while installing the .apk?如何在安装 .apk 时将一些文件从 .apk 解压到 /data/data/<package> 文件夹?
【发布时间】:2014-02-13 21:11:57
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android unzip


    【解决方案1】:

    我该怎么做?

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

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

    正确。

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

    那你一开始为什么要自动解压呢?

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

    不,抱歉,这是不可能的。

    【讨论】:

    • 嗨。谢谢回复。想要自动执行此操作,因为如果存在存储卡,它应该将自己解压缩到存储卡中。无论如何.. 由于这是不可能的,我想我将不得不使用 AssetManager 来解决我的问题。
    • @Puneet:即使有这样的功能,它也可能不会“在存储卡中解压”。 /data/data/your.package.here/ 位于手机的内部闪存中,无论应用程序本身安装在何处。
    【解决方案2】:

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

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

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

    【讨论】:

    • 安装后如何让数据应用复制文件?您的意思是它在首次启动时复制文件?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-26
      • 2020-06-29
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      相关资源
      最近更新 更多