アプリのインストール先を指定する方法
Fireデバイスでアプリがインストールされる場所は、Androidマニフェストファイルの設定で決まります。次の2つのストレージにインストールできます。
- 外部ストレージ(SDカードなど)
- 内部ストレージ(デバイスのメモリを使用)
古いバージョンのFireタブレットには外部ストレージがありませんが、新しいバージョンのFireタブレットには外部ストレージを使用するためのメモリカードスロットが用意されています。
一般的に、アプリのインストール場所にはデフォルトとして外部ストレージを指定します。
- ベストプラクティス
- 外部ストレージを指定する方法
- 内部ストレージを選択するタイミング
- Fireタブレットでの外部ストレージの設定
- アプリで2次ダウンロードを処理
- Unityによるインストール場所の指定
ベストプラクティス
ベストプラクティスとして、ほとんどのアプリでは、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
|
ほとんどのアプリで推奨されます。使用できる場合は外部ストレージにアプリをインストールします。外部ストレージに空き容量がない場合は、内部ストレージにアプリがインストールされます(空き容量がある場合)。ユーザーは後からこのアプリを手動で移動できます。その際は、[設定] > [アプリとゲーム] > [すべてのアプリケーションを表示] でアプリを選択します。 |
internalOnly
|
アプリのインストール場所を内部ストレージに限定します。内部ストレージに十分な空き容量がない場合、インストールは失敗します。ユーザーがアプリを後から手動で移動することはできません。ほとんどのアプリでは推奨されません。このオプションを選択するのは、次のセクションで説明するアプリのみにしてください。 |
auto
|
デフォルトで内部ストレージにインストールします。ただし、内部ストレージに空き容量がない場合は、アプリを外部ストレージにインストールします(外部ストレージが使用可能である場合)。ユーザーは後からこのアプリを手動で移動できます。その際は、[設定] > [アプリとゲーム] > [すべてのアプリケーションを表示] でアプリを選択します。 |
なお、APKファイルが外部ストレージにインストールされていても、データベース、プライベートユーザーデータ、最適化された.dexファイル、抽出されたネイティブコードはすべて、内部ストレージに保存されます。
詳細については、Androidドキュメントのアプリのインストール場所を参照してください。
内部ストレージを選択するタイミング
ほとんどのアプリでは、installLocation
にpreferExternal
を選択する必要があります。ただし、DRM保護されたメディアアプリは例外です。
- アプリがDRM保護されたメディアを再生するときにUSBストレージを使用できないと、DRMリソースが不安定になることがあります。
- アプリがDRM保護されたメディアを再生する場合は、
installLocation
をインクルードしないか、または値をinternalOnly
に設定してください。
DRM保護されたメディアアプリに加えて、次の種類のアプリも外部ストレージにインストールしないでください。
- サービス
- アラームサービス
- インプットメソッドエンジン
- アカウントマネージャー
- 同期アダプター
- デバイスアドミニストレーター
- 「ブート完了」メッセージをリッスンするブロードキャストレシーバー
- ライブ壁紙(Fire OSではサポートされていません)
- アプリウィジェット(Fire OSではサポートされていません)
詳細については、Androidドキュメントのアプリのインストール場所を参照してください。
Fireタブレットでの外部ストレージの設定
Fire OS 5タブレットで外部ストレージカードが検出されると、[設定] の [ストレージ] ページに [サポートされているアプリをSDカードにインストール] というオプションが表示されます。 デフォルトでは「オン」になっています。
アクティブのとき、この設定はAndroidの標準の動作installLocation="auto"
を効果的に反転させ、auto
がAmazonデバイスでpreferExternal
で動作するようにします。これは、Amazonデバイスのユーザーにとってはメリットですが、すべてのAndroidデバイス(Amazonが提供するデバイスを含む)にとって最良の選択は、マニフェストでpreferExternal
を指定することです。
他の最新のAndroidデバイスと同様、Fire OSタブレットでも、ユーザーは内部ストレージと外部ストレージの間でアプリを移動できます。次の例では、アプリを外部ストレージに移動した後も内部ストレージでアプリのフットプリントを確認できます。
アプリで2次ダウンロードを処理
初めての実行時でも別のタイミングでも、自ら2次ダウンロードを実行するアプリの場合、一般的にダウンロードされたファイルはデバイスのAPKファイルがインストールされている場所に保存されます。アプリが外部ストレージにインストールされた場合は、APKファイルが外部ストレージに存在することになります。
アプリによっては(特にゲーム)、追加のテクスチャやレベルなどのアセットファイルが含まれた2次ダウンロードが使用されることがあります。初回実行時の初期化中に行うなど、アプリのコード内でこのダウンロードを処理する場合は、AndroidのPackageManager getApplicationInfoメソッドを使用して、ApplicationInfo
クラスを取得します。
ApplicationInfo
クラスには、APKの場所(sourceDir
)と、リソースとマニフェストが格納されたソースディレクトリのパブリックな部分(publicSourceDir
)が含まれています。アプリが外部ストレージにインストールされている場合、これらのパスはその場所を指し、ユーザーが追加でダウンロードしたコンテンツをインストールする場所を示しています。
アプリがinstallLocation="preferExternal"
に従って40MBのAPKを外部ストレージにインストールしても、その後で、ダウンロードした1GBのデータファイルをアプリがApplicationInfo dataDir
のパスに基づいて内部ストレージに保存すると、外部ストレージを使用する意図に反し、デバイスの内部ストレージがすぐにいっぱいになるため、ユーザーの不満を招くことになります。そのため、2次ダウンロードではダウンロードパスにsourceDir
を使用するようにしてください。
Unityによるインストール場所の指定
Unityは、Amazonアプリストア用のゲームを作成する際に多くの開発者が使用する人気のツールです。Unityでは、Android用Player Settingsインスペクターを使用したインストール場所の設定がサポートされています。アプリのインストール場所を外部ストレージに構成する手順は次のとおりです。
- Unityプロジェクトで、[File-Build Settings…] をクリックします。
-
[Build Settings] ダイアログの [Platform] リストで [Android] を選択し、[Player Settings…] ボタンをクリックしてインスペクターを表示します。
-
[Other Settings] セクションを開いて、[Install Location] の設定を確認します。通常は、
preferExternal
がデフォルトになっています。これは、ほとんどの場合で最適な選択肢です。
YoYo GamesのGamemaker:Studioでも、AndroidプロジェクトにはデフォルトとしてpreferExternal
が使用されています。このデフォルト値は手動で変更できますが、そのままにしておくことをお勧めします。
ほかのエンジンや開発フレームワークでも、同様のオプションが用意されています。APKマニフェストでinstallLocation
がpreferExternal
に設定されていることを確認する方法については、使用しているツールのドキュメントを参照してください。