I have a user with an LG G3 running Android 5 Lollipop whose Google Play store claims that my app is not compatible with his device, and so he cannot download the app from the Google Play Store.
As you can see here, the LG G3 family of devices are and were all compatible with my APK: <https://lh3.googleusercontent.com/-haqWuRmyD70/VxAMVHgKhPI/AAAAAAAAL8k/RC2Bvfku5I8srJI8yaedpt-gkLYl1r7_ACLcB/s1600/12992313_10153458844096674_1931765807_n.png> I did some digging, apparently LG G3 users are also having compatibility/filtering issues with Clash of Clans. It turns out (and I kid you not) the device has an unorthodox screen resolution and undocumented screen density "640" that ostensibly is causing it to get filtered even though the Google Play Store UI has it listed as compatible: http://stackoverflow.com/questions/25221643/app-not-visible-on-google-play-for-qhd-lg-g3 It's not in the documented list, and it's "blacklisted by default": http://developer.android.com/guide/practices/screens_support.html >From the aforementioned SO post, you have to manually add the screen density to the AndroidManifest using the compatible-screens tag (previously, my "vanilla" AndroidManifest did not have supports-screens tags and it also did not have compatible-screens tags). What IS this crap?! So I came up with what should be the most "permissive" screen resolution configuration possible (because my app is a 3D game that is actually resolution-independent, and so it should be able to run on any size/density/resolution screen): <supports-screens android:resizeable="true" android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/> <compatible-screens> <screen android:screenSize="small" /> <screen android:screenDensity="ldpi" android:screenSize="small" /> <screen android:screenDensity="mdpi" android:screenSize="small" /> <screen android:screenDensity="hdpi" android:screenSize="small" /> <screen android:screenDensity="xhdpi" android:screenSize="small" /> <screen android:screenDensity="280" android:screenSize="small" /> <screen android:screenDensity="360" android:screenSize="small" /> <screen android:screenDensity="420" android:screenSize="small" /> <screen android:screenDensity="480" android:screenSize="small" /> <screen android:screenDensity="560" android:screenSize="small" /> <screen android:screenDensity="640" android:screenSize="small" /> <screen android:screenSize="normal" /> <screen android:screenDensity="ldpi" android:screenSize="normal" /> <screen android:screenDensity="mdpi" android:screenSize="normal" /> <screen android:screenDensity="hdpi" android:screenSize="normal" /> <screen android:screenDensity="xhdpi" android:screenSize="normal" /> <screen android:screenDensity="280" android:screenSize="normal" /> <screen android:screenDensity="360" android:screenSize="normal" /> <screen android:screenDensity="420" android:screenSize="normal" /> <screen android:screenDensity="480" android:screenSize="normal" /> <screen android:screenDensity="560" android:screenSize="normal" /> <screen android:screenDensity="640" android:screenSize="normal" /> <screen android:screenSize="large" /> <screen android:screenDensity="ldpi" android:screenSize="large" /> <screen android:screenDensity="mdpi" android:screenSize="large" /> <screen android:screenDensity="hdpi" android:screenSize="large" /> <screen android:screenDensity="xhdpi" android:screenSize="large" /> <screen android:screenDensity="280" android:screenSize="large" /> <screen android:screenDensity="360" android:screenSize="large" /> <screen android:screenDensity="420" android:screenSize="large" /> <screen android:screenDensity="480" android:screenSize="large" /> <screen android:screenDensity="560" android:screenSize="large" /> <screen android:screenDensity="640" android:screenSize="large" /> <screen android:screenSize="xlarge" /> <screen android:screenDensity="ldpi" android:screenSize="xlarge" /> <screen android:screenDensity="mdpi" android:screenSize="xlarge" /> <screen android:screenDensity="hdpi" android:screenSize="xlarge" /> <screen android:screenDensity="xhdpi" android:screenSize="xlarge" /> <screen android:screenDensity="280" android:screenSize="xlarge" /> <screen android:screenDensity="360" android:screenSize="xlarge" /> <screen android:screenDensity="420" android:screenSize="xlarge" /> <screen android:screenDensity="480" android:screenSize="xlarge" /> <screen android:screenDensity="560" android:screenSize="xlarge" /> <screen android:screenDensity="640" android:screenSize="xlarge" /> </compatible-screens> I did this, going against Google's recommendation (I actually agree with Google's recommendation) because I really need my app to run on LG G3 devices: *Caution:* Normally, *you should not use this manifest element*. Using this > element can dramatically reduce the potential user base for your > application, by not allowing users to install your application if they have > a device with a screen configuration that you have not listed. You should > use it only as a last resort, when the application absolutely does not work > with specific screen configurations. Instead of using this element, you > should follow the guide to Supporting Multiple Screens > <http://developer.android.com/guide/practices/screens_support.html> to > provide scalable support for multiple screens using alternative layouts and > bitmaps for different screen sizes and densities. > However, when I upload the new APK to the Google Play Store, I now see that some (by some, I mean hundreds) devices are getting filtered (with no specified DPI): <https://lh3.googleusercontent.com/-fIIwkKe4U9w/VxARY5iVMXI/AAAAAAAAL80/bfodDCP9Aj4-BC-UCoB73gHN52OUB7AxgCLcB/s1600/Screenshot%2B2016-04-14%2B14.52.57.png> I even tried adding screen tags for each screenSize without any screenDensity (e.g. <screen android:screenSize="large" />) to compatible-screens, despite my Android Studio IDE complaining that these tags needed to have screenDensity, but it did not work. How can I distribute my app to LG G3 users using Google Play Store -- without filtering _other_ devices without specific screen densities? In my opinion, there should not be undocumented screenDensity tags that are required -- and a permissive configuration shouldn't blacklist devices by default -- in other words, I should be able to distribute my app with a vanilla manifest that does not contain any special screen-related tags, and my app should run on all screen resolutions/sizes by default. Moreover, when Google Play Store says a device is compatible in the UI, it should not get filtered. These behaviors are creating real headaches for developers like Clash of Clans and myself. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/android-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/android-developers/cc4b5741-b2ef-4bdd-aa1e-d557b9729c6d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

