1

I have an android app developed with monaca. Some of my users have a Samsung S7 phone. When they install the app, it says it is not compatible. I checked the device catalog in the play developer console, and it says that all the Galaxy S7s are supported.

The app doesn't use any special permissions, and I can't find any reason why only the samsung phones are having this issue. It's not a big app either (~2.5MB).

Here is the config.xml file:

<?xml version='1.0' encoding='utf-8'?>
<widget id="" version="1.0.3" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android">
    <name></name>
    <description>Made with Monaca (http://monaca.mobi)</description>
    <author />
    <content src="index.html" />
    <allow-navigation href="*" />
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
    <preference name="loglevel" value="DEBUG" />
    <preference name="AndroidLaunchMode" value="singleTop" />
    <preference name="ErrorUrl" value="" />
    <preference name="SplashScreen" value="screen" />
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="BackupWebStorage" value="cloud" />
    <preference name="FadeSplashScreenDuration" value="250" />
    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="TopActivityIndicator" value="gray" />
    <preference name="GapBetweenPages" value="0" />
    <preference name="PageLength" value="0" />
    <preference name="PaginationBreakingMode" value="page" />
    <preference name="PaginationMode" value="unpaginated" />
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage" />
    </feature>
    <preference name="UIWebViewDecelerationSpeed" value="normal" />
    <preference name="KeyboardShrinksView" value="true" />
    <platform name="ios">
        <icon height="60" src="/res/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="/res/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" src="/res/ios/icon/icon-60@3x.png" width="180" />
        <icon height="76" src="/res/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="/res/ios/icon/icon-76@2x.png" width="152" />
        <icon height="80" src="/res/ios/icon/icon-40@2x.png" width="80" />
        <icon height="29" src="/res/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="/res/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" src="/res/ios/icon/icon-small@3x.png" width="87" />
        <icon height="167" src="/res/ios/icon/icon-83.5@2x~ipad.png" width="167" />
        <icon height="144" src="/res/ios/icon/icon-72@2x.png" width="144" />
        <icon height="72" src="/res/ios/icon/icon-72.png" width="72" />
        <icon height="100" src="/res/ios/icon/icon-50@2x.png" width="100" />
        <icon height="57" src="/res/ios/icon/icon.png" width="57" />
        <icon height="114" src="/res/ios/icon/icon@2x.png" width="114" />
        <icon height="40" src="/res/ios/icon/icon-40.png" width="40" />
        <icon height="50" src="/res/ios/icon/icon-50.png" width="50" />
        <splash height="480" src="/res/ios/screen/Default~iphone.png" width="320" />
        <splash height="960" src="/res/ios/screen/Default@2x~iphone.png" width="640" />
        <splash height="1334" src="/res/ios/screen/Default-667h.png" width="750" />
        <splash height="1136" src="/res/ios/screen/Default-568h@2x~iphone.png" width="640" />
        <splash height="2208" src="/res/ios/screen/Default-736h.png" width="1242" />
        <splash height="1242" src="/res/ios/screen/Default-Landscape-736h.png" width="2208" />
        <splash height="1024" src="/res/ios/screen/Default-Portrait~ipad.png" width="768" />
        <splash height="768" src="/res/ios/screen/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="/res/ios/screen/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="1536" src="/res/ios/screen/Default-Landscape@2x~ipad.png" width="2048" />
        <config-file parent="CFBundleLocalizations" platform="ios" target="*-Info.plist">
            <array>
                <string>en</string>
            </array>
        </config-file>
    </platform>
    <platform name="android">
        <icon density="ldpi" src="/res/android/icon/ldpi.png" />
        <icon density="mdpi" src="/res/android/icon/mdpi.png" />
        <icon density="hdpi" src="/res/android/icon/hdpi.png" />
        <icon density="xhdpi" src="/res/android/icon/xhdpi.png" />
        <icon density="xxxhdpi" src="/res/android/icon/xxxhdpi.png" />
        <icon density="xxhdpi" src="/res/android/icon/xxhdpi.png" />
        <splash density="port-ldpi" src="/res/android/screen/splash-port-ldpi.9.png" />
        <splash density="port-mdpi" src="/res/android/screen/splash-port-mdpi.9.png" />
        <splash density="port-hdpi" src="/res/android/screen/splash-port-hdpi.9.png" />
        <splash density="port-xhdpi" src="/res/android/screen/splash-port-xhdpi.9.png" />
        <splash density="port-xxhdpi" src="/res/android/screen/splash-port-xxhdpi.9.png" />
        <splash density="port-xxxhdpi" src="/res/android/screen/splash-port-xxxhdpi.9.png" />
        <config-file parent="/*" target="AndroidManifest.xml">
            <compatible-screens>
                <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="xxhdpi" android:screenSize="small" />
                <screen android:screenDensity="xxxhdpi" android:screenSize="small" />
                <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="xxhdpi" android:screenSize="normal" />
                <screen android:screenDensity="xxxhdpi" android:screenSize="normal" />
                <screen android:screenDensity="560" android:screenSize="normal" />
            </compatible-screens>
        </config-file>
    </platform>
    <platform name="windows">
        <icon src="/res/winrt/icon/package_logo_winrt.png" target="StoreLogo" />
        <icon src="/res/winrt/icon/app_logo_winrt.png" target="Square150x150Logo" />
        <icon src="/res/winrt/icon/app_small_logo_winrt.png" target="Square30x30Logo" />
        <icon src="/res/winrt/icon/app_tile_wide_logo_winrt.png" target="Wide315x150Logo" />
        <splash height="300" src="/res/winrt/screen/app_splash_screen_winrt.png" width="620" />
    </platform>
    <platform name="chrome">
        <icon height="128" src="/platforms/chrome/icon.png" width="128" />
    </platform>
    <preference name="WindowsStorePublisherName" value="My Name" />
    <preference name="WindowsStoreIdentityName" value="7f6c64e1-c804-8b64-e1ff-232dc96ea114" />
    <preference name="ios-XCBuildConfiguration-TARGETED_DEVICE_FAMILY" value="1" />
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="FadeSplashScreen" value="true" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <access origin="*" />
    <preference name="KeepRunning" value="true" />
    <preference name="monaca:AndroidIsPackageNameSeparate" value="true" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="Orientation" value="portrait" />
    <preference name="SplashScreenDelay" value="3000" />
    <preference name="Fullscreen" value="false" />
    <plugin name="ionic-plugin-keyboard" spec="~2.2.1" />
</widget>

I've only been developing for a year and a half, and this is my first question to stack overflow. Sorry in advance if I did any n00b mistakes in posting this...

And thanks in advance for anybody who takes the time to read this!

1 Answers1

0

I suspect it's your compatible screens list. I can't be sure how your config.xml file gets converted into an Android manifest because I'm unfamiliar with the monaca framework, but it looks to me like your app is only supporting small and normal screen sizes. Rejecting all large and xlarge screens as well as some densities.

The docs for the <compatible-screens> tag state:

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 to provide scalable support for multiple screens using alternative layouts and bitmaps for different screen sizes and densities.

I suggest you follow their advice assuming your framework allow it. For instance, my app's screen size/density compatibility policy is implemented in a single line in the manifest:

  <supports-screens android:smallScreens="false" />

To support all screens except small ones.

Columbo
  • 6,648
  • 4
  • 19
  • 30
  • I don't think it's a screen size issue. My Nexus 6 (which is a really large phone) wasn't previously compatible because I was missing the larger screen-size / density combo in the manifest- but then it also said it wasn't compatible in the developers console. Here the developer console says the samsung s7 is supported. :/ – J. Paczuski Nov 19 '17 at 08:58