【问题标题】:Android move app to sdAndroid 将应用移至 sd
【发布时间】:2012-10-24 06:06:42
【问题描述】:

其实我想知道我们把app移到sd卡的时候涉及到哪些项目?我试图搜索,但所有答案都指向“如何将应用程序移动到 sd”,但实际上我只想知道哪些项目已移动到 sd 以及剩下哪些项目。当我将应用程序移动到 sd 时,我可以看到仍然有一些内存(在内部存储器中)。我只是好奇剩下的东西是什么?应用程序实际移动到哪里(在 SD 卡的哪个部分)?

【问题讨论】:

    标签: android


    【解决方案1】:

    好问题!

    让我用一个示例包来解释你说“com.example.app”

    现在,当第一次安装应用程序时,将创建一个名为的新文件夹

    /data/com.example.app

    这里面将包含所有应用程序的私有数据。

    同理,APK本身包含在

    /data/app/com.example.app-1.apk

    现在,当我们将应用程序移至外部存储时,会发生以下情况。

    • 它将不会移动到 /mnt/sdcard/ 分区
    • Android 将在 /mnt/asec 分区下创建一个名为 /mnt/asec/com.example.app 的新文件夹。您可以使用任何文件管理器应用程序访问此路径,因为它具有 rw 权限
    • 它将创建 libs 目录的副本(如果有)并将所有文件、数据库移至此处。
    • 它还会将 APK 从“/data/app/com.example.app-1.apk”复制到/mnt/asec/com.example.app/com.example.app-1.apk

    这样,/data的分区空间将被节省下来,可以被其他应用重复使用。当手机 /data 存储空间不足时,这是一个很好的技巧,可以将应用程序移至外部存储。

    【讨论】:

    • 感谢您非常详细的回答。我不明白如果它在 /mnt/asec 中创建分区,它仍然使用内部存储器对吗?它甚至没有进入 /mnt/sdcard,为什么?从你的回答来看,好像所有的东西都被移走了,内存中到底剩下了什么?因为我们仍然可以看到几千字节(或多或少)的数据仍然保留在内存中。
    • Android 将其存储分区为多个子分区。尝试使用 adb 观察 /proc/partitions。所以 /data 和 /mnt 属于单独的分区。所以 /mnt/asec 不是内部存储器。其次,为什么它不去 /mnt/sdcard/ 是一个 Android 设计选择。如果 Android OS 想要它,它也可以很好地去那里。此外,由于库和缓存被遗留在内存中,因此在移动后会在内部存储器中看到几 KB 的数据,还有一个“移动到内部存储”选项。因此,当需要再次将东西移回时,它是一个占位符:)
    • 只要输入“mount”就可以看到所有挂载的分区:/mnt/asec 挂载在 tmpfs 上,tmpfs 又挂载在 /mnt/sdcard/.android_secure - 见:stackoverflow.com/questions/22549489/…还有这个:android.stackexchange.com/questions/25439/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多