Nexus7がGoogle Playで"このアイテムはお使いの端末に対応していません"(This item is not compatible with your device)

 Nexus7(2012)で開発した当のアプリが、Google Playで”このアイテムはお使いの端末に対応していません”(This item is not compatible with your device)と表示されて焦りました。
 結論から言うと、カメラ回りのuses-permissionとuses-featureが原因でした。
 このアプリはカメラを使うことのあるアプリだったので、

<uses-permission android:name=”android.permission.CAMERA” />

 をAndroidManifest.xmlに宣言してあります。これがなければ、そもそもカメラを使えません。
 しかし、このuses-permissionがあると、暗黙的に

<uses-feature android:name=”android.hardware.camera” android:required=”true” />

 が宣言されているものとみなされてしまうそうです。
 つまりカメラ機能が「必須」と判断され、それが使えない端末はGoogle Playで”このアイテムはお使いの端末に対応していません”(This item is not compatible with your device)と表示されてしまうのです。
 Nexus7は一応フロントカメラが付いているのですが、何故か「カメラなし」と判定されるようで、この結果になってしまいます。
 「カメラ機能を使う場合があるけれど、なければなくて良し、必須ではない」という場合、

<uses-feature android:name=”android.hardware.camera” android:required=”false” />

 を併せて明示的に宣言しなければなりません。
 その他、uses-permissionを宣言することでuses-featureが暗黙的に宣言されてしまうケースがあるようなので、「使う場合もあるけれど必須ではない」機能を追加する場合、required=”false”でuses-featureを追加しておいた方が良いでしょう。

For example, if an application requests the CAMERA permission but does not declare a element for android.hardware.camera, Google Play considers that the application requires a camera and should not be shown to users whose devices do not offer a camera.

If you don’t want Google Play to filter based on a specific implied feature, you can disable that behavior. To do so, declare the feature explicitly in a element and include an android:required=”false” attribute. For example, to disable filtering derived from the CAMERA permission, you would declare the feature as shown below.

<uses-feature android:name=”android.hardware.camera” android:required=”false” />

| Android Developers

 以下が参考になります。

uses-permissionの落とし穴、サポートデバイスを増やすmanifestの記述 | Program Resource
Android – 設定の罠 – Qiita

シェアする

  • このエントリーをはてなブックマークに追加

フォローする