开发者控制台

指定应用的安装位置

指定应用的安装位置

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

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

虽然较早版本的Fire平板电脑没有外部存储,但较新版本的Fire平板电脑通过存储卡插槽提供了外部存储选项。

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

最佳实践

作为最佳实践,大多数应用应该在Android清单文件中为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 推荐用于大多数应用。将应用安装在外部存储上(如果可用)。如果外部存储已满,则将应用安装到内部存储(如果可用)。用户以后可以手动移动应用,方法是从“Settings(设置)”>“Apps & Games(应用和游戏)”>“Manage All Applications(管理所有应用)”中选择该应用。
internalOnly 仅将应用安装到内部存储。如果内部存储空间不足,安装将失败。用户以后无法手动移动该应用。不建议用于大多数应用。仅为下一节中描述的应用类型选择此选项。
auto 默认情况下安装到内部存储。但是,如果内部存储已满,则将应用安装到外部存储(假设外部存储可用)。用户以后可以手动移动应用,方法是从“Settings”>“Apps & Games”>“Manage All Applications”中选择该应用。

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

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

何时选择内部存储

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

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

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

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

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

Fire平板电脑外部存储设置

当Fire OS 5平板电脑检测到外部存储卡时,“Settings(设置)”中的“Storage(存储)”页面会显示“Install Supported Apps on your SD card(在SD卡上安装支持的应用)”选项。 默认值为“on”。

当激活时,此设置将有效逆转installLocation="auto"的标准Android行为,使得auto在亚马逊设备上的行为类似于preferExternal。这对于使用这些设备的客户来说是一个进步,但是对于所有Android设备,包括来自亚马逊的设备,最好的选择是在清单中指定preferExternal

Fire OS平板电脑与当前其他Android设备一样,也允许用户在内部和外部存储之间移动应用。在此示例中,即使在应用移动到外部存储后,也可以看到它在内部存储上的占用空间。

处理应用中的二次下载

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

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

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

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

使用Unity指定安装位置

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

  1. 从您的Unity项目中,单击File-Build Settings...(文件构建设置...)
  2. Build Settings(构建设置)对话框中,选择“Platform(平台)”列表中的Android,然后单击Player Settings…(播放器设置...)按钮以显示检查器。

  3. 打开Other Settings(其他设置)部分并查找Install Location(安装位置)设置。preferExternal通常是默认值 – 这通常都是最好的选择。

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

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