为什么有些应用无法移动到sd卡?

Why some apps can't be moved to the sd card?

我知道开发人员通过清单中的 android:installLocation” attribute 选择 允许 或不允许。我的问题是:允许或不允许的原因是什么?


我经常看到许多应用程序不属于下一个列表的任何类别。他们不允许移动到 SD 卡,他们为什么要这样做?那能给出什么类型的advantage/benefit。

  • Services
  • Alarm Services
  • Input Method Engines
  • Live Wallpapers
  • App Widgets
  • Account Managers
  • Sync Adapters
  • Device Administrators
  • Broadcast Receivers listening for "boot completed"

嗯,我认为主要原因(也可能是唯一原因)是因为 phone 可能没有太多内部存储空间。这样 phone 就可以利用外部存储,让用户在内部存储已满时安装更多应用程序。我假设您已经阅读了以下文档。它没有提到这个答案,但我认为这就是它存在的原因。

https://developer.android.com/guide/topics/data/install-location.html

编辑:我认为有很多低端设备的内部存储与外部存储相比非常低。

编辑 2:为什么不这样做是因为外部存储上的所有数据都是世界可读的。因此,如果您的应用程序存储数据,则可以将其取出并在其他设备上读取。根据您可能不想允许的应用程序。

根据 the documentation,在以下情况下,您不应允许您的应用安装在外部存储设备上:

  • Services
  • Alarm Services
  • Input Method Engines
  • Live Wallpapers
  • App Widgets
  • Account Managers
  • Sync Adapters
  • Device Administrators
  • Broadcast Receivers listening for "boot completed"

文档接着说:

By default, the system will not allow your application to install on the external storage, so you don't need to worry about your existing applications.

这意味着默认情况下不允许在外部存储上安装。这可能意味着大部分无法安装在外部存储上的应用只是开发人员根本没有意识到 installLocation 并使用默认行为的情况。

您需要单独分析每个应用程序,看看开发者是否专门设置了 installLocation="internalOnly" 或者他们是否根本没有设置它,以确定它是否是有意的。