Androidマニフェストとデバイスフィルタリングに関するトラブルシューティング
Amazonアプリストアでは、アプリのマニフェストを使用して、アプリと互換性があるFireデバイスを特定します。開発者コンソールでAndroidバイナリファイルをアップロードする際、マニフェストとターゲットデバイスの機能に互換性がない場合は [アプリのターゲットを指定する] 画面にそれが示されます。ここに記載されているトラブルシューティング情報を活用して、デバイスサポートに関連するエラーメッセージを理解してください。
バイナリファイルの更新を計画している場合は、現在のデバイスサポートを維持するために、マニフェストの互換性の問題を解決する必要があります。互換性の問題が解決されない場合、そのデバイスではアプリは利用できません。
この記事では、互換性に関するよくあるエラーメッセージと、考えられる解決策について説明します。 Amazonアプリストアのマニフェストフィルタリングに関する詳細については、次のトピックを参照してください。
アプリのバイナリファイルのアップロード手順にあるよくあるエラーのトラブルシューティングセクションも参照してください。
- エラーメッセージの表示
- APKが対象APIレベルの要件を満たしていない
- android.hardware.touchscreen
- android.hardware.location
- android.hardwareとandroid.software
- android.minSdkVersionとandroid.maxSdkVersion
- supports-screens
- screenSizeとscreenDensity
- android.glEsVersion
- supports-gl-texture
- CPUアーキテクチャ
エラーメッセージの表示
Androidバイナリファイルは、[アプリファイルをアップロード] 画面でアップロードします。[アプリのターゲットを指定する] 画面の [サポート対象デバイス] セクションで、[サポート対象デバイスを編集] をクリックすると、バイナリファイルが特定のデバイスでサポートされているかどうかを確認できます。サポートされていない場合は灰色で表示され、選択不可となっています。情報ツールチップにマウスを合わせると、その理由が表示されます。以下の例を参照してください。
この例では、「android:minSdkVersion = '25'; デバイスには'22'が必要です
」というエラーメッセージが表示されています。これは、このAPKではAPIレベル25以上を要件としていますが、デバイスはAPIレベル22までしかサポートしていないことを意味します。したがって、このAPKをデバイスでインストールすることはできません。
次のセクションで、よくあるエラーとその解決方法を説明します。
APKが対象APIレベルの要件を満たしていない
このエラーは、APKが対象APIレベルの要件を満たしていないことを示します。アプリのAPK内のtargetSdkVersion
属性を更新して、Android APIレベルの最低要件を満たすようにする必要があります。
詳細については、デバイスフィルタリングと互換性を参照してください。
android.hardware.touchscreen
エラー:android.hardware.touchscreen
タッチスクリーンに対応したデバイスでのみアプリを使用できるようにするには、マニフェストで宣言する必要があります。デフォルトでは、アプリはタッチスクリーン非対応のデバイス(Fire TVなど)と互換性があると見なされ、開発者コンソールでアプリ申請時に選択したデバイスで使用できます。タッチスクリーンが必須であることを宣言するには、マニフェストで次のいずれかの要素定義を使用します。
<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" />
android.hardware.location
エラー:android.hardware.location
マニフェストにACCESS_FINE_LOCATION
のパーミッションが含まれている場合、次の2つの暗黙の機能がマニフェストに追加されます。
android.hardware.location
android.hardware.location.gps
暗黙の機能は必須であるため、バイナリファイルはその機能を持たないデバイスとは互換性がないと見なされます。それらのデバイスに互換性を持たせるには、暗黙の機能をマニフェストに明示的に含める必要があります。そのためには、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>
のどちらかの要素が含まれていることを示します。
この警告が表示されるデバイスでアプリを利用できるようにするには、次のいずれかを実行します。
- 問題の機能がバイナリで実際に使用されていない場合、マニフェストから
<uses-feature>
または<uses-permission>
要素を削除します。 - 問題の機能はバイナリで使用されているが、必須ではない(アプリ側で機能をテストし、存在しない場合は関連する機能を自動的に削除する)場合は、
<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"の記述に従って画面のサポートを追加し、マニフェストを適切に更新します。
<compatible-screens>
の使用は推奨されません。この要素によって、アプリに対応するデバイスの数が大幅に減ることがあります。指定されていない画面設定のデバイスはすべてターゲットから除外されます。この要素は、特定の画面サイズ/密度設定でアプリがまったく動作しないときに、最終手段として使用するだけにしてください。android.glEsVersion
エラー:android.glEsVersion = "X"; デバイスには"Y"が必要です
このメッセージは、ターゲットデバイスでサポートされていないOpenGL ESバージョンをバイナリファイルが指定していることを示します。このデバイスをターゲットに指定するには、該当するOpenGL ESバージョンの参考資料を調べて、マニフェストを適切に更新します。
supports-gl-texture
エラー: No supported supports-gl-texture formats in manifest
このメッセージは、マニフェストで指定されたOpenGLテクスチャ圧縮形式と、ターゲットデバイスでサポートされているOpenGLテクスチャ圧縮形式の間に一致する部分がないことを示しています。サポートされているテクスチャ圧縮形式の詳細については、<supports-gl-texture>
を参照してください。 デバイスをターゲットに指定するには、互換性のあるテクスチャ形式のサポートを追加し、マニフェストを適切に更新します。また、マニフェストとデバイスの仕様で、OpenGLテクスチャ形式の大文字表記やスペルを照合します。
CPUアーキテクチャ
エラー: CPU Architecture = '64-bit'; device requires '32-bit'
このメッセージは、ターゲットデバイスでサポートされているCPUアーキテクチャがバイナリファイルに含まれていないことを示します。この32ビットデバイスをターゲットにするには、armeabi-v7aとx86のうち、サポートされている必要なCPUアーキテクチャをバイナリに含めます。
Last updated: 2024年7月15日