1

My app in Google Play is not visible to some of the devices regardless their Android Version. Is there any way to understand why specifically my application is not compatible with the Brand X device via Android Studio or Google Android Developer Console?

E.g;

  • Huawei P9 Android 6.0 is OK

  • Huawei P9 Lite Android 6.0 FAILS

  • LG G5 - Android 7.0 is OK
  • Android ONE - Android 7.1.1 FAILS

I checked the previously entered questions/answers and understood that the reason could be one of the followings;

  1. android:required="false" should be used for several uses-features.
  2. Could be related to application size.

What I am really out after is to understand the reason why it is not incompatible with a specific device. I will try these suggestions and share the result, though.

My manifest file is as follows;

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.2" package="com.apps.appname" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
**<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />**
<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
Community
  • 1
  • 1
shamaleyte
  • 1,882
  • 3
  • 21
  • 38
  • 2
    I think `` is a problem. Not all devices support USB host. And that devices might be not supported by app – Vladyslav Matviienko Feb 15 '17 at 11:57
  • @VladMatvienko; so you think using "android:required="false" " for that feature is a good step to try out? – shamaleyte Feb 15 '17 at 12:02
  • @VladMatvienko has answered you correctly and you can check device (if you have one with you) with this app from Google Play [link](https://play.google.com/store/apps/details?id=eu.chainfire.usbhostdiagnostics) – dario.budimir Feb 15 '17 at 12:03
  • yes, because using it without `"android:required="false"` will restrict devices without this feature. But be aware that you won't be able to use USB-host features on such devices in any case, and it shou;ld lead to crash trying to use them. I'll post complete answer now. – Vladyslav Matviienko Feb 15 '17 at 12:05
  • @dario.budlimir, just checked and it seems that all of my devices are good with that app. So does that mean that "android.hardware.usb.host" is supported by my devices and that is not related to my problem? or does it confirm that it is the problem? – shamaleyte Feb 15 '17 at 12:06
  • @VladMatvienko, will go with your solution and let you know the result. Thanks in advance. – shamaleyte Feb 15 '17 at 12:44

3 Answers3

3

Is there any way to understand why specifically my application is not compatible with the Brand X device via Android Studio or Google Android Developer Console?

Yes ,Cloud Test Lab ,is a way you can test your application compatibility.

Get free automated testing of your app on physical devices covering nearly every brand, model, and version of the devices your users might have. The lab helps you quickly find compatibility issues that you might miss using only your available test devices.

Use Cloud Test Lab from Android Studio:

Add the following to the studio.vmoptions file:

-Denable.google.cloud.testing.plugin=true

Now, you should be able to see the additional options for Cloud Test Lab in Android Studio's Run/Debug configurations dialog.

Cloud Test Lab in Android Studio's Run/Debug configurations dialog

Under "Cloud device matrix", you can provide a different "Matrix configuration" by clicking on the following icon: and creating a different configuration.

Click "Apply" and close the window.

Now you can run the test by clicking the Run configuration icon in Android Studio.

Use Cloud Test Lab from the command-line

First, install gCloud SDk Add Alpha components to enable access to Cloud Test Lab from the Alpha repository

$ gcloud components update alpha

Now configure the project for the codelab. If you're using your own project, substitute with the correct project id:

$ gcloud config set project cloud-test-lab-babbq-2015

Make sure your authentication credentials are current

$ gcloud auth login

To run the test on different devices, let's first look at a list of available devices by running this command:

$ gcloud alpha test android devices list

For Example:

a test on Nexus6 and Nexus7 virtual devices, running APIs 19 and 21 in English and French locales on portrait and landscape orientations. GCloud provided the URL to the test results page, where results appear as each test is completed.

$ gcloud alpha test android run \
--type instrumentation \
--app app/build/outputs/apk/app-debug-unaligned.apk \

--test app/build/outputs/apk/app-debug-androidTest-unaligned.apk \

--device-ids Nexus6,Nexus7 \
--os-version-ids 19,21 \ --locales en,fr \
--orientations portrait,landscape

Guide For Using Google Cloud Test Lab

Google Play Developer Console with cloud Test Lab Feature

check below link for more details https://firebase.google.com/docs/test-lab/

Hope this helps!!! Happy Coding!!

Edit : To review aggregated test results for all test matrices for a given app in your Firebase project, click the name of the app, as shown in the example test matrix results page shown below.

Example test execution results page

[5

Example test matrix list page

[6

Example of a test matrix results page with only four test executions

[7

Note: Detailed test results are available for 90 days after you run a test, and are stored in a Google Cloud Storage (GCS) bucket (but are also visible in the Firebase console). You can view detailed test results in the GCS bucket when you click View Source Files on the test execution results page. When detailed test results are no longer available, you can still see which tests passed and failed.

Note: Image sources are taken from official documentation.

PN10
  • 1,888
  • 3
  • 23
  • 34
  • thanks for the details. But one question; does it give feedback explaining what is wrong, like "the app is incompatibile with Huawei P9 Lite because of the following reasons..." or does it just say "incompatible" ? – shamaleyte Feb 16 '17 at 11:05
  • @shamaleyte well test results are generated for reviews but the form of results may be available in different formats..you have to interpretate results through test logs, screenshots, and videos. For Robo test, detailed test results also include an Activity Map that graphically shows the UI paths that were visited by Robo test...see my Updated answer for your understanding I have added images..hope this clears your doubt.... – PN10 Feb 17 '17 at 19:12
2

Using <uses-feature android:name="android.hardware.usb.host" /> in the manifest will result in Google Play not allowing the app to be installed on the devices without USB-host feature.
If you still want the app to be available for such devices, you should add "android:required="false" for this feature.
Be aware that you still won't be able to use USB-host features on devices, which don't have such features. Trying to use them will result in exceptions. You should check if the feature is available before using it.

Vladyslav Matviienko
  • 10,610
  • 4
  • 33
  • 52
  • ,thanks for the advice,it was the main reason why it was incompatible with my few devices.I will mark PN10's answer as accepted even though your suggestion was the solution to my problem because the question was to understand how we figure out the main reason if there is an incompatibility with a specific device.Thanks for your explanation though – shamaleyte Feb 21 '17 at 15:42
0

This might be late but hope it helps someone out.

On the Google Play Console,

step 1 to 4 in pics step 5 and 6 in pics info of interest

  1. Locate and click on 'Device catalog' on the side menu. You might have to agree to T&Cs if it's your first time using the 'Device Catalog' feature.
  2. You can filter the catalog to view all devices
  3. Then filter the devices to find the one with the incompatibility issue
  4. Click on the arrow to right of the list item
  5. On the device details page, under overview, there'll be a statement that tells you whether the device is supported or not.
  6. Click on the show more text at the end of the statement
  7. Look for Reasons why the device is unsupported in the information that's revealed by previous step