Many Android Developers (and users) get confused that why a certain app isn’t showing up on the new Xperia X10 Mini (and few other) phones. This happens even if they support all android versions and have published their apps for all countries, so that shouldn’t be the issue. I came across this as well when few people mentioned that they couldn’t find my app Wi-Fi Keep Alive in the X10 mini marketplace. On some digging into the android docs and the X10 mini specs, I found the issue.
The problem is that the X10 mini has a very small screen with only a QVGA resolution. This screen size/resolution wasn’t supported by Android until recently and the Android system might not be able to scale resources and layouts designed for other screen sizes well enough to suit the X10 mini. Hence, the Android system designers have chosen that any app which does not declare explicit support for small screens (i.e., the app dev has tested his app on small screens and made any changes, if needed, and then declared that everything works fine in the Android Manifest) then it is considered not compatible by default and hence, the Android marketplace will filter your app out.
Now, this is a big loss. A lot of X10 minis were sold and there are lot of new low-tier and cheap Android smartphones coming out with this resolution, so it is a significant market share that you can’t afford to lose. The solution is simple. If the app does indeed work fine on small screens (or you have fixed it to work), then all you got to do is add the below mentioned line in your AndroidManifest.xml:
<supports-screens android:smallScreens=”true” />
That’s it. Your app should now show up fine in all screen sizes markets. Note that for all other screen sizes and resolutions, Android considers the default support as true and your app will show in those markets even if you don’t make any explicit declarations for them. You can read more about this here: Supporting Multiple Screens in Android
If android:minSdkVersion or android:targetSdkVersion is “4″ (Android 1.6) or higher, the default value for everything is true. If your application requires Android 1.6 features, but does not support these densities and/or screen sizes, you need to set the appropriate attributes to false.
This should mean that small screens should be set as supported by default if you have your minSdk or targetSdk set to anything above or equal to 4. However, in my case, my apps had minSdk as 3 but targetSdk as 7 or 8 but still they didn’t show up in X10 mini marketplace till I added the smallScreens support to true in my manifest file. If anyone has any ideas about as to why it was like this, please let me know.