Android, <uses-feature> の未指定による Android マーケットでのフィルタリング

Android マーケットに登録していたアプリのいくつかが、少し前から表示されなくなってしまった。
原因をいろいろ調べてみると、AndroidManifest.xml ファイルに <uses-feature> 要素の記述をしなければいけなくなった模様。
(参考:Android Developers Blog: Market Housekeeping Alert

<uses-feature> 要素には、対応するハードウェアやソフトウェアの機能を記述するらしく、Android マーケットはこの要素の内容を見てフィルタリングして、未対応のデバイスへのインストールを防いでいるらしい。

とはいっても、何の記述を追加すればよくわからなかったのだが、Android SDK に付属している aapt というツールで調べることができるらしい。

Android SDK の platform-tools ディレクトリにある aapt を使うと、必要な uses-feature がリストアップされる。

$ aapt dump badging <path_to_exported_.apk>

実行例

$ <SDK>/platform-tools/aapt dump badging YourApp.apk
package: name='package.name.yourapp' versionCode='1' versionName='1.0.0'
application: label='yourApp' icon='res/drawable-mdpi/icon.png'
launchable activity name='package.name.yourapp.YourApp'label='YourApp' icon=''
uses-library:'com.google.android.maps'
uses-permission:'android.permission.INTERNET'
uses-permission:'android.permission.ACCESS_COARSE_LOCATION'
uses-permission:'android.permission.ACCESS_FINE_LOCATION'
uses-permission:'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS'
uses-permission:'android.permission.ACCESS_MOCK_LOCATION'
sdkVersion:'4'
uses-feature:'android.hardware.location'
uses-feature:'android.hardware.location.gps'
uses-feature:'android.hardware.location.network'
uses-feature:'android.hardware.touchscreen'
main
other-activities
search
supports-screens: 'small' 'normal' 'large'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240'

そして、<uses-feature> を指定するのだが、android:required 属性を指定しなかったり、属性値に true を指定するとインストールに失敗する。
必須の機能でなければ false を指定するようなので、以下のように指定した。

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

そして、ビルドしたアプリを Android マーケットにアップロードしたら、表示されるようになった。

参考:<uses-feature> | Android Developers

«
»