title: Why Android dropped thousands of supported devices
body: <p>I want to know why the Google Play Store has dropped support for thousands of devices intended for my new app version compared to the old app version. I used DevExtreme to combine a different template and the current code to make a single Cordova mobile hybrid app. Now I use one configuration file, let DevExtreme make a template file, and then combine them in Visual Studio using DevExtreme. </p>
  
  <p>My beta release has the following stats: </p>
  
  <pre><code>Supported devices:11016 
  Unsupported devices:4153
  Excluded devices:0
  </code></pre>
  
  <p>My production release has the following stats: </p>
  
  <pre><code>Supported devices:13509
  Unsupported devices:1660
  Excluded devices:0
  
  &lt;widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="com.XXX.XXX.XXX.network" version="3.2.17"&gt;
    &lt;name&gt;EXAMPLE&lt;/name&gt;
    &lt;description&gt;Template&lt;/description&gt;
    &lt;author email="developer@EXAMPLE.com" href="https://www.EXAMPLE.com"&gt;EXAMPLE, Inc&lt;/author&gt;
    &lt;preference name="permissions" value="none" /&gt;
    &lt;preference name="prerendered-icon" value="true" /&gt;
    &lt;preference name="android-windowSoftInputMode" value="adjustResize" /&gt;
    &lt;preference name="SplashScreen" value="splash" /&gt;
    &lt;preference name="SplashScreenDelay" value="100000" /&gt;
    &lt;preference name="AutoHideSplashScreen" value="false" /&gt;
    &lt;preference name="SplashShowOnlyFirstTime" value="false" /&gt;
    &lt;feature name="http://api.phonegap.com/1.0/network" /&gt;
    &lt;preference name="FadeSplashScreen" value="true" /&gt;
    &lt;preference name="ShowSplashScreenSpinner" value="false" /&gt;
    &lt;preference name="DisallowOverscroll" value="true" /&gt;
    &lt;preference name="StatusBarOverlaysWebView" value="false" /&gt;
    &lt;preference name="StatusBarBackgroundColor" value="#000000" /&gt;
    &lt;preference name="android-minSdkVersion" value="14" /&gt;
    &lt;preference name="android-targetSdkVersion" value="22" /&gt;
    &lt;access origin="*" launch-external="yes" /&gt;
    &lt;!--internal ACCESS: allow-navigation--&gt;
    &lt;allow-navigation href="*" /&gt;
    &lt;!--EXTERNAL ACCESS: allow-intent: This whitelist does not apply to plugins, only hyperlinks and calls to window.open().--&gt;
    &lt;allow-intent href="*" /&gt;
    &lt;!--https://github.com/katzer/cordova-plugin-email-composer#using-the-plugin--&gt;
    &lt;!--https://www.npmjs.com/package/cordova-plugin-sms--&gt;
    &lt;config-file platform="android" parent="/manifest" mode="merge"&gt;
      &lt;uses-sdk android:targetSdkVersion="23" /&gt;
      &lt;uses-feature android:name="android.hardware.location" /&gt;
      &lt;uses-feature android:name="android.hardware.location.gps" /&gt;
      &lt;uses-feature android:name="android.hardware.location.network" /&gt;
      &lt;uses-feature android:name="android.hardware.telephony" /&gt;
      &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
      &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
      &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
      &lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&gt;
      &lt;uses-permission android:name="android.permission.READ_SMS" /&gt;
      &lt;uses-permission android:name="android.permission.RECEIVE_MMS" /&gt;
      &lt;uses-permission android:name="android.permission.RECEIVE_SMS" /&gt;
      &lt;uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" /&gt;
      &lt;uses-permission android:name="android.permission.SEND_SMS" /&gt;
    &lt;/config-file&gt;
    &lt;config-file platform="ios" parent="ITSAppUsesNonExemptEncryption" mode="merge"&gt;
      &lt;false /&gt;
    &lt;/config-file&gt;
  
    &lt;gap:plugin name="cordova-plugin-email-composer" version="0.8.3" source="npm" /&gt;
    &lt;gap:plugin name="cordova-plugin-sms" source="npm" /&gt;
    &lt;gap:plugin name="cc.fovea.cordova.purchase" source="npm" version="6.0.0"&gt;
      &lt;param name="BILLING_KEY" value="VALUE" /&gt;
    &lt;/gap:plugin&gt;
  
    &lt;plugin name="cordova-plugin-device-orientation" /&gt;
    &lt;plugin name="cordova-plugin-splashscreen" onload="true" /&gt;
    &lt;plugin name="cordova-plugin-whitelist" /&gt;
    &lt;plugin name="cordova-plugin-ios-longpress-fix" /&gt;
    &lt;plugin name="cordova-plugin-statusbar" onload="true" /&gt;
  &lt;/widget&gt;
  </code></pre>
  
  <p>I replaced some revealing values with "EXAMPLE", "BILLING_KEY", and "XXX". Is there a setting in the config file that explains why there are less supported devices now? </p>
  
  <p>Here is the old template configuration file: </p>
  
  <pre><code>&lt;?xml version='1.0' encoding='utf-8'?&gt;
  &lt;widget id="com.handicomp.golf.mobile.network" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"&gt;
      &lt;name&gt;Golf Mobile Network&lt;/name&gt;
      &lt;description&gt;
          A sample Apache Cordova application that responds to the deviceready event.
      &lt;/description&gt;
      &lt;author email="dev@cordova.apache.org" href="http://cordova.io"&gt;
          Apache Cordova Team
      &lt;/author&gt;
      &lt;content src="index.html" /&gt;
      &lt;plugin name="cordova-plugin-whitelist" spec="1" /&gt;
      &lt;access origin="*" /&gt;
      &lt;allow-intent href="http://*/*" /&gt;
      &lt;allow-intent href="https://*/*" /&gt;
      &lt;allow-intent href="tel:*" /&gt;
      &lt;allow-intent href="sms:*" /&gt;
      &lt;allow-intent href="mailto:*" /&gt;
      &lt;allow-intent href="geo:*" /&gt;
      &lt;platform name="android"&gt;
          &lt;allow-intent href="market:*" /&gt;
      &lt;/platform&gt;
      &lt;platform name="ios"&gt;
          &lt;allow-intent href="itms:*" /&gt;
          &lt;allow-intent href="itms-apps:*" /&gt;
      &lt;/platform&gt;
  </code></pre>
  
  <p>Looking at the APK details I see that there are 4 more features:</p>
  
  <ul>
  <li>android.hardware.LOCATION</li>
  <li>android.hardware.location.GPS</li>
  <li>android.hardware.location.NETWORK</li>
  <li>android.hardware.TELEPHONY</li>
  </ul>
  
  <p>and 3 more permissions needed: </p>
  
  <ul>
  <li>android.permission.SEND_SMS</li>
  <li>android.permission.ACCESS_COARSE_LOCATION</li>
  <li>android.permission.ACCESS_FINE_LOCATION</li>
  </ul>