開発者コンソール

Androidマニフェストとデバイスフィルタリングに関するトラブルシューティング


Androidマニフェストとデバイスフィルタリングに関するトラブルシューティング

Amazonアプリストアでは、アプリのマニフェストを使用して、アプリと互換性があるFireデバイスを特定します。AmazonアプリストアでAPKをアップロードする際、マニフェストとターゲットデバイスの機能に互換性がない場合は [APKファイル][バイナリ])タブにそれが示されます。ここに記載されているトラブルシューティング情報を活用して、デバイスサポートに関連するエラーメッセージを理解してください。

APKの更新を計画している場合は、現在のデバイスサポートを維持するために、マニフェストの互換性の問題を解決する必要があります。互換性の問題が解決されない場合、そのデバイスではアプリは利用できません。

この記事では、互換性に関するよくあるエラーメッセージと、考えられる解決策について説明します。 Amazonアプリストアのマニフェストフィルタリングに関する詳細については、次のトピックを参照してください。

APKのアップロード手順の中のトラブルシューティングセクションもご覧ください。

エラーメッセージの表示

[APKファイル] タブでAmazonアプリストアにAPKをアップロードします。[デバイスサポート] セクション[デバイスのサポートを表示] または [デバイスサポートを編集] リンクをクリックすると、APKが特定のデバイスでサポートされているかどうかを確認できます。サポートされていなければ、デバイスの横に「X」が表示されるか、灰色で表示されます。情報ツールチップにマウスを合わせると、その理由が表示されます。以下の例をご覧ください。

デバイスサポート - 理由の表示

この例では、android:minSdkVersion = '22'; device requires '15'というエラーメッセージが表示されています。これは、APKではAPIレベル22以上を要件としていますが、デバイスはAPIレベル15までしかサポートしていないということです。したがって、APKをデバイスにインストール/サポートすることができません。

次のセクションで、よくあるエラーとその解決方法を説明します。

android.hardware.touchscreen

エラー:android.hardware.touchscreen

特に明記されていない限り、タッチスクリーンのサポートは、すべてのAndroid APKに必須と見なされます。このメッセージは、マニフェストがタッチスクリーンに対応したデバイスのみをターゲットに指定すること、そのためタッチスクリーン非対応のデバイス(Fire TVなど)とは互換性がないことを示しています。タッチスクリーン非対応のデバイスでアプリを使用できるようにするには、マニフェストに次のエレメントを追加して、タッチスクリーンが必須でないことを明記する必要があります。

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

android.hardware.location

エラー:android.hardware.location

マニフェストにACCESS_FINE_LOCATIONのパーミッションが含まれている場合、次の2つの暗黙の機能がマニフェストに追加されます。

android.hardware.location  
android.hardware.location.gps

暗黙の機能は必須であるため、APKはその機能を持たないデバイスとは互換性がないと見なされます。それらのデバイスに互換性を持たせるには、暗黙の機能をマニフェストに明示的に含める必要があります。そのためには、android:required属性をfalseに設定します。

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

詳細については、ハードウェアとソフトウェアの一般的な機能を参照してください。

android.hardwareとandroid.software

エラー:android.hardware._featureまたはandroid.software._feature

これらのメッセージは、ターゲットデバイスでサポートされていない機能に対してマニフェストで<uses-feature>または<uses-permission>のどちらかの要素が含まれていることを示します。 

この警告が表示されるデバイスでアプリを利用できるようにするには、次のいずれかを実行します。  

  • 問題の機能がAPKで実際に使用されていない場合、マニフェストから<uses-feature>または<uses-permission>要素を削除します。
  • 問題の機能はAPKで使用されているが、必須ではない(アプリ側で機能をテストし、存在しない場合は関連する機能を自動的に削除する)場合は、<uses-feature>要素を追加または調整して、android:required="false"属性を含めます。
  • 問題の機能がアプリに必須の場合、デバイスを確実にターゲットに指定するには、その機能のないデバイスでアプリが適切に機能を無効化するように、コードを変更する必要があります。変更をテストしたら、マニフェストを編集して、android:required="false"を適切な<uses-feature>要素に含めます。 機能の検出については、AndroidドキュメントのgetSystemAvailableFeaturesを参照してください。

android.minSdkVersionとandroid.maxSdkVersion

エラー:android.minSdkVersion = "X"; device requires "Y"またはandroid.maxSdkVersion = "X"; device requires "Y"

これらのメッセージは、<uses-sdk>要素で指定されたAndroid APIレベルの範囲に、ターゲットデバイスで現在サポートされているAndroid APIレベル("Y")が含まれていないことを示しています。 そのデバイスをターゲットに指定するには、Android APIの範囲を調整してレベル("Y")を含めます。各種Amazon Fireデバイスに適したAndroidとAmazonのAPIレベルについては、Fireタブレットのデバイス仕様:概要Fire TVのデバイス仕様:概要を参照してください。

supports-screens

エラー:supports-screens = "X"; device requires "size" (and/or "width")

このメッセージは、<supported-screens>要素で定義されている画面サイズや最小幅と、デバイスでサポートされている画面サイズや最小幅の間に一致する部分がないことを示しています。<compatible-screens>の説明どおりに、Amazonアプリストアでデバイスがフィルタリングされます。デバイスをターゲットに指定するには、"size"および"width"の記述に従って画面のサポートを追加し、それに応じてマニフェストを更新します。

screenSizeとscreenDensity

エラー: No supported screenSize and screenDensity pair in manifest; device requires "size" and "density"

このメッセージは、<compatible-screens>で指定された<screen>要素と、デバイスでサポートされている要素の間に一致する部分がないことを示しています。<compatible-screens>に記載されたAndroidの仕様どおりに、Amazonアプリストアでデバイスがフィルタリングされます。デバイスをターゲットに指定するには、"size"および"density"の記述に従って画面のサポートを追加し、マニフェストを適切に更新します。

android.glEsVersion

エラー:android.glEsVersion = "X"; device requires "Y"

このメッセージは、ターゲットデバイスでサポートされていないOpenGL ESバージョンをAPKが指定していることを示します。このデバイスをターゲットに指定するには、該当するOpenGL ESバージョンの参考資料を調べて、マニフェストを適切に更新します。

supports-gl-texture

エラー: No supported supports-gl-texture formats in manifest

このメッセージは、マニフェストで指定されたOpenGLテクスチャ圧縮形式と、ターゲットデバイスでサポートされているOpenGLテクスチャ圧縮形式の間に一致する部分がないことを示しています。サポートされているテクスチャ圧縮形式の詳細については、<supports-gl-texture>を参照してください。 デバイスをターゲットに指定するには、互換性のあるテクスチャ形式のサポートを追加し、マニフェストを適切に更新します。また、マニフェストとデバイスの仕様で、OpenGLテクスチャ形式の大文字表記やスペルを照合します。