0

Sample在 Android 设备上安装了一个应用程序。我安装的应用程序存储在我的 Adroid 设备上的位置(我的应用程序未在 google-play 中获得授权),但我可以看到其他应用程序存储位置路径(这些应用程序已获得 google-play 的授权)。

谢谢。

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

4

3 回答 3

2

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

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

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

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

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

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

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

警告:当用户通过系统设置启用 USB 大容量存储与计算机共享文件或卸载 SD 卡时,外部存储将从设备中卸载,并且在外部存储上运行的所有应用程序都会立即终止。

详细信息:所有安装位置

于 2012-07-03T04:04:39.007 回答
0

这取决于应用程序是安装到内部存储器还是外部存储器。如果您使用(在您的清单中)android:installLocationofpreferExternal或者auto它可能/可能存储在.android_securesdcard 的部分中。否则,它应该位于/data/app/com.yourpackage

如果它存储在安全区域中,您将无法访问它(假设您没有做骇人听闻的事情 - 即使那样我也不确定您是否可以访问它)。

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

于 2012-07-02T13:23:25.583 回答
0

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

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

您可以如何利用这些知识可能因案例和版本而异。

于 2012-07-02T14:03:33.093 回答