Android マニフェストを利用して Amazon 端末を指定する

Amazon アプリストアでは、Android マニフェストの仕様(つまり、AndroidManifest.xml ファイルのコンテンツ)を使用して、APK と互換性がある Fire 端末を特定します。マニフェストと端末の機能に互換性がないと、APK ファイルでその端末をターゲットにできません。この記事では、Fire 端末をターゲットにした APK のマニフェストを作成する際に考慮する必要のある一般的なトピックについて説明します。

説明に移る前に、重要なポイントを紹介します。

  • 既存のバイナリは、そのまま引き続きサポートされます。マニフェストの適用前に申請したバイナリは、そのターゲット端末で引き続き動作します。
  • 次のファイルをダウンロードして保存してください: Fire 端末のマニフェストフィルターリファレンスこの記事では、頻繁にこのファイルに言及します。マニフェストを作成する際は、このファイル(および以下に記載されている他のページ)を確認してください。

Android とAmazon SDK のレベル

<uses-sdk>

Fire 端末では、オペレーティングシステムに Fire OS を使用しています。Fire OS は、Android のカスタムバージョンです。そのため、Fire OS の各バージョンは、単一の Android API レベルに対応しています。したがって、マニフェストを作成する最初の手順として、ターゲットとする Fire 端末に適した Android API レベルを指定します。マニフェストフィルターリファレンスには、流通している各 Fire 端末の Android API レベルが示されています。たとえば、2013 年以降のすべてのタブレットをターゲットにするには、マニフェストに次のようなエントリを含めます。

<uses-sdk android:minSdkVersion="19" />

注意:

  • 端末の Android API レベルは、OS 更新の展開に応じて随時変更されます。たとえば、2014 年の Fire タブレットは、Android API レベル 19 の Fire OS 4.5 で動作します。これらの端末が Fire OS 5.0 に更新されると、Android API レベルは 22 に更新されます。バイナリが両方のバージョンの Fire OS と互換性がある場合(ほとんどが該当します)、<uses-sdk> で指定する範囲に API レベル 19 ~ 22 が含まれていることを確認してください。
  • Amazon アプリストアでは、android:maxSdkVersion 属性もサポートしています。ただし、アプリが特定の端末で利用できるかどうかを確認する場合に限られます。ユーザーが Fire OS を新しいバージョンに更新した場合は、効果がありません。通常、より高い API レベルと互換性がない場合を除き、この属性を使用する必要はありません。

<uses-amzn-sdk>

バイナリが Fire OS のみをサポートする場合は、このエレメントを使用して、それらの端末の Amazon API レベルを指定します。同じバイナリで Fire 端末と Amazon 以外の端末の両方をターゲットにする場合は、このエレメントを使用しないでください。マニフェストでこのエレメントを使用した場合、Amazon アプリストアでは、バイナリを Fire 以外の端末から除外します。

先ほどのマニフェストフィルターリファレンスによると、2013 年の Fire タブレットでは、Amazon API レベル 3 を使用しています。したがって、2013 年以降の Fire 端末のみをバイナリのターゲットに指定する場合は、次のエレメントを使用できます。

<uses-amzn-sdk android:minSdkVersion="3" />

お気付きかもしれませんが、一部の Fire タブレット、Fire TV、Fire TV Stick では、Amazon API レベルが 0 になっています。これは、誤植ではありません。これらの端末には Amazon SDK が搭載されていますが、当時は番号を付けていなかったためです。<uses-sdk> エレメントと <uses-amzn-sdk> エレメントを一緒に使用すると、2011 年と 2012 年のタブレットを区別できます。たとえば、2012 年以降のタブレットをターゲットにし、最初の Kindle Fire タブレットを除外するには、次のエレメントを使用します。

<uses-sdk android:minSdkVersion="15" />
<uses-amzn-sdk android:minSdkVersion="0" />

このエレメントの注意点:

  • Fire Phone および 2013 年と 2014 年の Fire タブレットではすべて Amazon API レベル 3を使用していますが、SDK に重要な違いがあります。Fire Phone SDK の拡張機能の詳細については、「Fire Phone SDK の最新情報」を参照してください。
  • 端末の Amazon API レベルは、OS 更新の配布に応じて随時変更されます。たとえば、2014 年の Fire タブレットは、Amazon API レベル 3 の Fire OS 4.5 で動作します。これらの端末が Fire OS 5.0 に更新されると、Amazon API レベルは 4 に更新されます。バイナリが両方のバージョンの Fire OS と互換性があり、Fire 端末のみをバイナリのターゲットにする場合は、<uses-amzn-sdk> で指定する範囲に Amazon API レベル 3 と 4 が含まれていることを確認してください。
  • <uses-amzn-sdk> では、android:maxSdkVersion 属性もサポートしています。ただし、アプリが特定の端末で利用できるかどうかを確認する場合に限られます。ユーザーが Fire OS を新しいバージョンに更新した場合は、効果がありません。通常、より高い API レベルと互換性がない場合を除き、この属性を使用する必要はありません。

ハードウェアとソフトウェアの一般的な機能

SDK レベルを指定したら、<uses-permission> エレメントと <uses-features> エレメントがターゲットとしている端末に適していることを確認します。特定のハードウェアとソフトウェアの機能については、Fire 端末のマニフェストフィルターリファレンスと、Fire タブレットFire PhoneFire TV の各仕様を参照してください。すぐに参照できるように、よく指定される属性を以下に示します。Amazon アプリストアでサポートされている、フィルタリングをトリガーするエレメントの詳細については、サポートされているマニフェストフィルターに関するトピックを参照してください。

機能 Fire タブレット Fire Phone Fire TV
仕様 Fire タブレットの仕様に関するページを参照してください Fire Phone の仕様に関するページを参照してください Fire TV の仕様に関するページを参照してください
画面解像度
  • Fire HDX 8.9(2014): 2560 x 1600
  • Kindle Fire HDX 8.9"(2013): 2560 x 1600
  • Kindle Fire HDX 7"(2013): 1920 x 1200
  • Kindle Fire HD 8.9"(2012): 1920 x 1200
  • Fire HD 7(2014): 1280 x 800
  • Fire HD 6(2014): 1280 x 800
  • Kindle Fire HD 7"(2013): 1280 x 800
  • Kindle Fire HD 7"(2012): 1280 x 800
  • Kindle Fire(2012): 1024 x 600
  • Kindle Fire(2011): 1024 x 600
1280 x 720
  • 1920 x 1080
  • 1280 x 720
画面サイズ
  • Fire HDX 8.9(2014): xlarge
  • Kindle Fire HDX 8.9"(2013): xlarge
  • Kindle Fire HD 8.9" WAN(2012): xlarge
  • それ以外のモデル: large
normal large
画面密度
  • Fire HDX 8.9(2014): xhdpi
  • Kindle Fire HDX 8.9"(2013): xhdpi
  • Kindle Fire HDX 7"(2013): xhdpi
  • Fire HD 7(2014): hdpi
  • Fire HD 6(2014): hdpi
  • Kindle Fire HD 7"(2013): hdpi
  • Kindle Fire HD 8.9"(2012): hdpi
  • Kindle Fire HD 7"(2012): hdpi
  • Kindle Fire(2012): mdpi
  • Kindle Fire(2011): mdpi
xhdpi xhdpi
カメラ
  • Fire HDX 8.9(2014): 前面と背面(オートフォーカス付き)
  • Fire HD 7(2014): 前面と背面
  • Fire HD 6(2014): 前面と背面
  • Kindle Fire HDX 8.9"(2013): 前面と背面(オートフォーカス付き)
  • Kindle Fire HDX 7"(2013): 前面のみ
  • Kindle Fire HD 8.9"(2012): 前面のみ
  • Kindle Fire HD 7"(2012): 前面のみ
前面と背面(オートフォーカス付き) なし
GPS
  • Fire HDX 8.9 WAN(2014)
  • Kindle Fire HDX WAN(2013)
  • Kindle Fire HDX 8.9" WAN(2013)
  • Kindle Fire HD 8.9" WAN(2012)
あり なし
テレフォニー なし あり なし
タッチスクリーン あり あり なし
マイクロホン カメラ付きの全モデル あり なし
Bluetooth
  • Fire HDX 8.9(2014): Bluetooth 4.0 LE
  • Fire HD 7(2014): Bluetooth 4.0 LE
  • Fire HD 6(2014): Bluetooth 4.0 LE
  • Kindle Fire HDX 8.9"(2013): Bluetooth 4.0
  • Kindle Fire HDX 7"(2013): Bluetooth 4.0
  • Kindle Fire HD 7"(2013): Bluetooth 4.0
  • Kindle Fire HD 8.9"(2012): Bluetooth 3.0
  • Kindle Fire HD 7"(2012): Bluetooth 3.0
Bluetooth 3.0(LE)
  • Fire TV: Bluetooth 4.0
  • Fire TV Stick: Bluetooth 3.0
OpenGL Fire タブレットの仕様に関するページを参照してください Fire Phone の仕様に関するページを参照してください Fire TV の仕様に関するページを参照してください

暗黙の機能

多くの開発者は、暗黙の機能でつまずきます。Android 標準では、特定の機能に対して <uses-permission> を指定すると、1 つ以上の <uses-feature> エレメントが暗に指定され、android:required="true" が前提になります。暗黙の機能は必須となるため、機能が存在しないときに適切な制限がかかるようアプリが設計されている場合でも、APK は機能を備えていない端末と互換性がないと見なされます。

次のシナリオについて考えてみましょう。アプリでは、近くのガソリンスタンドを検索するために、端末の現在位置を使用します。アプリは端末の GPS から現在位置を取得できますが、GPS が利用できない場合、ユーザーは住所や場所を入力することができます。GPS を使用するには、マニフェストに次のエレメントを含める必要があります。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

次のエレメントを明示的に定義していない場合、暗黙的に定義されます。

<uses-feature android:name="android.hardware.location" android:required="true" />
<uses-feature android:name="android.hardware.location.gps" android:required="true" />

このバイナリを Amazon アプリストアに申請した場合、互換性があるのは Fire Phone と Fire タブレットの WAN モデルのみになります。それらの Fire 端末だけが GPS 機能を備えているためです。他の Fire 端末とも互換性を持たせるには、マニフェストに次のエレメントを含め、必須ではないと指定する必要があります(ただし、GPS がなくてもアプリが正常に機能する場合に限ります)。

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />

暗黙の機能を指定する権限の完全な一覧については、 暗黙の機能要求を指定する権限に関するセクションを参照してください。

Fire TV のターゲット指定

Fire TV 端末では、タッチスクリーンとマルチタッチ機能をサポートしていません。Android マニフェストでは、タッチスクリーンは、他の機能とは異なり、特に明記されていない限り、必須と見なされます。そのため、タブレットやスマートフォンで問題なく動作するほとんどのバイナリは、マニフェストに変更を加えないと、Fire TV と互換性がないと見なされます。

アプリでタッチスクリーンが必須でないことを指定するには、マニフェストに次のエレメントを追加します。

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

関連リソース