指定应用的安装位置


指定应用的安装位置

安卓清单文件中的设置决定了您的应用在 Fire 设备上的安装位置。有两个存储位置:

  • 外部存储(如 SD 卡)
  • 内部存储(使用设备的内存)

Fire TV Stick 没有外部存储空间,但 Fire TV(第 1 代和第 2 代,而不是第 3 代)通过存储卡插槽提供外部存储选项。

通常,应用应该指定外部存储作为默认安装位置。

最佳实践

作为最佳实践,大多数应用应该在安卓清单文件中为 installLocation 指定 preferExternal。如果未指定,您的应用将安装在内部存储中。

填充内部存储可能导致:

  • 更少的应用安装
  • 应用评级差
  • 负面客户体验

某些用户可能在外部存储空间中有足够的可用空间,但如果应用的清单没有指定 preferExternal,则应用将安装在内部。因此,用户会收到存储空间不足警告,或者根本无法安装应用,从而让用户失望。

选择 preferExternal 有助于确保您的应用拥有最大的用户群,并在 Fire 设备上获得更好的用户体验。

如何指定外部存储

在您的应用的 AndroidManifest.xml 中,在 <manifest> 标签内添加 installLocation 属性并将其值设置为 preferExternal。示例如下:

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

installLocation 参数具有多个可用值:

installLocation 值 描述
preferExternal 推荐用于大多数应用。将应用安装在外部存储上(如果可用)。如果外部存储已满,则将应用安装到内部存储(如果可用)。用户以后可以手动移动应用,方法是从“设置”>“应用和游戏”>“管理所有应用”中选择该应用。
internalOnly 仅将应用安装到内部存储。如果内部存储空间不足,安装将失败。用户以后无法手动移动该应用。不建议用于大多数应用。仅针对下一节中描述的应用类型选择此选项。
auto 默认情况下安装到内部存储。但是,如果内部存储已满,则将应用安装到外部存储(假设外部存储可用)。用户以后可以手动移动应用,方法是从“设置”>“应用和游戏”>“管理所有应用”中选择该应用。

请注意,即使 APK 文件安装在外部存储中,所有数据库、私有用户数据、优化的 .dex 文件和提取的本机代码都存储在内部存储中。

有关更多信息,请参阅安卓文档中的应用安装位置

何时选择内部存储

大多数应用应该为 installLocation 选择 preferExternal。但是,受 DRM 保护的媒体应用是一个例外:

  • 如果您的应用播放受 DRM 保护的媒体,则如果 USB 存储变得不可用,DRM 资源可能会变得不稳定。
  • 如果您的应用播放受 DRM 保护的媒体,则根本不应包含 installLocation,或将其值设置为 internalOnly

除了受 DRM 保护的媒体应用外,绝不应在外部存储器上安装以下类型的应用:

  • 服务
  • 警报服务
  • 输入法引擎
  • 账户管理器
  • 同步适配器
  • 设备管理员
  • 侦听“启动完成”消息的广播接收器
  • 动态壁纸(在 Fire OS 上不支持)
  • 应用小部件(在 Fire OS 上不支持)

有关更多详细信息,请参阅安卓文档中的应用安装位置

Fire TV 外部存储设置

Fire TV(第 1 代)支持 USB 外部存储,Fire TV(第 2 代)包括用于外部存储的 microSD 插槽。在这些设备上,为用户提供了用来管理连接的外部存储的设置。

用户还可以将内部存储的应用移动到 SD 卡:

处理应用中的二次下载

对于在第一次运行时或在任何其他时间执行自己的二次下载的应用,这些下载的文件通常存储在设备上安装 APK 文件的位置。如果应用安装在外部存储上,则 APK 文件将位于外部存储上。

某些应用(特别是游戏)使用包含附加纹理、关卡或其他资源文件的二次下载。如果您在应用代码中处理此下载(例如作为第一次运行初始化的一部分),请使用安卓 PackageManager getApplicationInfo 方法检索 ApplicationInfo 类。

ApplicationInfo 类包含 APK 的位置 (sourceDir) 和源目录的公共部分,包括资源和清单 (publicSourceDir)。如果应用已安装在外部存储上,这些路径将指向该位置,并指示用户应安装其他下载内容的位置。

如果您的应用使用 installLocation="preferExternal" 将 40 MB APK 安装到外部存储,但随后将下载的 1 GB 数据文件存储到内部存储,因为该应用使用 ApplicationInfo dataDir 路径,这将无法实现使用外部存储的目的,并快速填满设备的内部存储空间,从而导致客户不满。因此,请确保二次下载使用 sourceDir 作为下载路径。

使用 Unity 指定安装位置

Unity 是为亚马逊应用商店创建游戏的最常用工具之一。Unity 支持通过适用于安卓的播放器设置检查器来设置安装位置。要在外部存储上配置应用安装位置,请执行以下操作:

  1. 从您的 Unity 项目中,单击文件构建设置...
  2. 构建设置对话框中,选择“平台”列表中的安卓,然后单击播放器设置... 按钮以显示检查器。

  3. 打开其他设置部分并查找安装位置设置。preferExternal 通常是默认值 – 这几乎总是最好的选择。

YoYo Games 的 Gamemaker:Studio 也使用 preferExternal 作为安卓项目的默认设置。虽然您可以手动更改此默认值,但建议您保持原样。

其他引擎和开发框架提供了类似的选项。请参阅您正在使用的工具的文档,以确保您在 APK 清单中将 installLocation 设置为 preferExternal