Fireタブレットでインストール先を指定する方法


Fireタブレットでインストール先を指定する方法

Fireデバイスでアプリがインストールされる場所は、Androidマニフェストファイルの設定で決まります。インストールできる場所は、次の2つのストレージです。

  • 外部ストレージ(SDカードなど)
  • 内部ストレージ(デバイスのメモリを使用)

古いFireタブレットには外部ストレージがありませんが、新しいFireタブレットには外部ストレージを使用するためのメモリカードスロットが用意されています。

一般的に、アプリのインストール場所にはデフォルトとして外部ストレージを指定します。

ベストプラクティス

ベストプラクティスとして、ほとんどのアプリでは、AndroidマニフェストファイルのinstallLocationpreferExternalを指定することが推奨されます。指定しない場合、アプリは内部ストレージにインストールされます。

内部ストレージがいっぱいになると、次のような問題が起こる可能性があります。

  • アプリがインストールされる回数が減る。
  • アプリの評価が下がる。
  • ユーザーエクスペリエンスが低下する。

アプリのマニフェストで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ファイル、抽出されたネイティブコードはすべて、内部ストレージに保存されます。

詳細については、AndroidドキュメントのApp install location(英語のみ)を参照してください。

内部ストレージを選択すべき場合

ほとんどのアプリでは、installLocationpreferExternalを選択する必要があります。ただし、DRM保護されたメディアアプリは例外です。

  • アプリがDRM保護されたメディアを再生するときにUSBストレージを使用できないと、DRMリソースが不安定になることがあります。
  • アプリがDRM保護されたメディアを再生する場合は、installLocationをまったく追加しないか、値をinternalOnlyに設定します。

DRM保護されたメディアアプリに加えて、次の種類のアプリも外部ストレージにインストールしないでください。

  • サービス
  • アラームサービス
  • インプットメソッドエンジン
  • アカウントマネージャー
  • 同期アダプター
  • デバイスアドミニストレーター
  • 「ブート完了」メッセージをリッスンするブロードキャストレシーバー
  • ライブ壁紙(Fire OSではサポートされていません)
  • アプリウィジェット(Fire OSではサポートされていません)

詳細については、AndroidドキュメントのApp install location(英語のみ)を参照してください。

Fireタブレットでの外部ストレージの設定

Fire OS 5タブレットで外部ストレージカードが検出されると、[設定][ストレージ] ページに [サポートされているアプリをSDカードにインストール] というオプションが表示されます。 デフォルトでは「オン」になっています。

この設定がアクティブの場合、Androidの標準の動作installLocation="auto"が事実上反転し、AmazonデバイスでautopreferExternalのように機能します。これは、Amazonデバイスのユーザーにとっては便利ですが、すべてのAndroidデバイス(Amazonが提供するデバイスを含む)にとって最良の選択は、マニフェストでpreferExternalを指定することです。

ほかのAndroid最新デバイスと同様、Fire OSタブレットでも、ユーザーが内部ストレージと外部ストレージの間でアプリを移動できます。次の例では、アプリを外部ストレージに移動した後も内部ストレージでアプリのフットプリントを確認できます。

アプリにおける二次ダウンロードの処理

初回実行時など任意のタイミングで自動的に二次ダウンロードを実行するアプリの場合、通常、ダウンロードされたファイルはデバイスのAPKファイルがインストールされている場所に保存されます。アプリが外部ストレージにインストールされた場合、APKファイルは外部ストレージに存在することになります。

アプリによっては(特にゲーム)、追加のテクスチャやレベルなどのアセットファイルが含まれた二次ダウンロードが使用されることがあります。初回実行時の初期化中に行うなど、アプリのコード内でこのダウンロードを処理する場合は、AndroidのPackageManager getApplicationInfoメソッドを使用して、ApplicationInfoクラスを取得します。

ApplicationInfoクラスには、APKの場所(sourceDir)と、リソースとマニフェストが格納されたソースディレクトリのパブリックな部分(publicSourceDir)が含まれています。アプリが外部ストレージにインストールされている場合、これらのパスはその場所を指し、ユーザーが追加でダウンロードしたコンテンツをインストールする場所を示しています。

アプリがinstallLocation="preferExternal"に従って40MBのAPKを外部ストレージにインストールしても、その後で、ダウンロードした1GBのデータファイルをアプリがApplicationInfo dataDirのパスに基づいて内部ストレージに保存すると、外部ストレージを使用する本来の目的が無になり、デバイスの内部ストレージがすぐにいっぱいになるため、ユーザーの不満を招くことになります。そのため、二次ダウンロードではダウンロードパスにsourceDirを使用するようにしてください。

Unityによるインストール場所の指定

Unityは、Amazonアプリストア用のゲームを作成する際によく使用される人気のツールです。Unityでは、Androidのプレイヤー設定インスペクターを使用してインストール場所を設定できます。アプリのインストール場所を外部ストレージに構成する手順は次のとおりです。

  1. Unityプロジェクトで、[File-Build Settings…] をクリックします。
  2. [Build Settings] ダイアログの [Platform] リストで [Android] を選択し、[Player Settings…] ボタンをクリックしてインスペクターを表示します。

  3. [Other Settings] セクションを開いて、[Install Location] の設定を確認します。通常は、preferExternalがデフォルトになっています。これは、ほとんどの場合に最適な選択肢です。

YoYo GamesのGamemaker:Studioでも、AndroidプロジェクトにはデフォルトとしてpreferExternalが使用されています。このデフォルト値は手動で変更できますが、そのままにしておくことをお勧めします。

ほかのエンジンや開発フレームワークでも、同様のオプションが用意されています。APKマニフェストでinstallLocationpreferExternalに確実に設定するには、使用しているツールのドキュメントを参照してください。