Category Archives: Uncategorized

How i missed thousands of app downloads

Recently i got a bug report from a reader and he complained about the fact that he cannot download my compass. So i asked him which device he was using to check if his device supports all needed sensors. It was strange that his device had all necessary sensors to get the compass to work. So i was asking myself why does Google Play filter his device.

My first thought was that there should be some kind of restriction in the manifest.xml of the compass. I looked inside the manifest.xml found out that there were 3 <uses-feature> tags with the attribute android:required=”true” and all other set to false.

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />
<uses-feature android:name="android.hardware.screen.landscape" android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait" android:required="true" />
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />
<uses-feature android:name="android.hardware.faketouch" android:required="true" />

My compass was available to about 580 devices with this configuration. I thought, if i remove some <uses-feature> or set them to required=false would Google Play filter less devices? So i removed faketouch, landscape  and portrai and uploaded the compass apk file to Google Play.

Interestingly Google Play automatically added the <uses-feature> touchscreen and landscape to my app. I thought, what if i set landscape and portrai to required=false? Would Google Play still automatically add the  <uses-feature> landscape  and touchscreen? So i changed the manifest.xml and uploaded it again. Now Google Play added only touchscreen to my app and no landscape. So there it was. I got rid of one  <uses-feature> by using the following configuration.

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />
<uses-feature android:name="android.hardware.screen.landscape" android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait" android:required="false" />

<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />

I was curious now if my changes would get Google Play to make my app available to more devices and looked inside the product details page of the compass. I could not believe what i was reading there.

This application is available to over 1798 devices

Really Google. Really. I just removed faketouch and set landscape and portrai to required=false. How can this be the reason why the compass is now available to nearly 4 times more devices than before? My app is online since the 11th of July 2012. Can you imagine how much downloads the compass would have if i had known this before?

Well what did i learn for the future? The next time i publish an app, i will test the best configuration for the manifest.xml. So that Google Play makes my app available to as much devices as possible.