Android设备上的应用程序存储位置

时间:2012-07-02 12:09:51

标签: android

我在Android设备上安装了一个Sample应用程序。我安装的应用程序存储在我的Adroid设备上(我的应用程序未在google-play中授权),但我可以看到其他应用程序存储位置路径(这些应用程序被授权进行谷歌播放)。
/>谢谢。

例如,我安装了一个Calculator应用程序。它将存储到设备中的/data/calculaot-package-name。出于测试目的,我将自己的应用程序安装到Android设备上。它在我的应用程序的存储路径中没有看到它的路径。

3 个答案:

答案 0 :(得分:2)

从API Level 8开始,您可以允许将应用程序安装在外部存储设备上(例如,设备的SD卡)。这是一个可选功能,您可以使用android:installLocation清单属性为您的应用程序声明。如果您未声明此属性,则您的应用程序将仅安装在内部存储上,并且无法将其移动到外部存储。

要允许系统在外部存储上安装您的应用程序,请修改清单文件以在android:installLocation元素中包含属性,其值为“preferExternal”或“auto” 。例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

如果声明“preferExternal”,则请求将应用程序安装在外部存储上,但系统不保证您的应用程序将安装在外部存储上。如果外部存储空间已满,系统会将其安装在内部存储器上。用户还可以在两个位置之间移动您的应用程序。

如果您声明“自动”,则表明您的应用程序可能已安装在外部存储上,但您没有安装位置的首选项。系统将根据几个因素决定安装应用程序的位置。用户还可以在两个位置之间移动您的应用程序。

当您的应用程序安装在外部存储上时:

  • 只要外部存储设备安装在设备上,对应用程序性能没有影响。
  • .apk文件保存在外部存储器中,但所有私有用户数据,数据库,优化的.dex文件和提取的本机代码都保存在内部设备内存中。
  • 存储应用程序的唯一容器使用随机生成的密钥加密,该密钥只​​能由最初安装它的设备解密。因此,安装在SD卡上的应用程序仅适用于一个设备。
  • 用户可以通过系统设置将您的应用程序移动到内部存储。

警告:当用户启用USB海量存储与计算机共享文件或通过系统设置卸载SD卡时,将从设备卸载外部存储,并在外部运行所有应用程序存储立即被杀死。

详细信息:All Installation Location

答案 1 :(得分:0)

这取决于应用程序是否安装在内部或外部存储器中。如果您使用(在您的清单中)android:installLocation preferExternalauto,则很可能/可能将其存储在SD卡的.android_secure部分中。否则,它应位于/data/app/com.yourpackage

如果它存储在安全区域,你将无法得到它(假设你没有做任何骇客的事情 - 即使那时我也不确定你是否能够做到这一点。)

编辑:我应该补充一点,在大多数情况下,您可以从应用程序管理器将应用程序移动到内部存储。如果这是您的应用,但您可以指定仅在内部存储上使用它。

答案 2 :(得分:0)

要手动查找,adb pull /data/system/packages.xml并检查它以查找代码路径条目。

要从程序中执行此操作,需要api调用以确定可在文档中找到的代码路径。

您可以根据具体情况和版本的不同对知识进行哪些使用。