shamaleyte
shamaleyte

Reputation: 1912

How to understand why "Android app is incompatible with some specific devices"

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;

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>

Upvotes: 1

Views: 2582

Answers (3)

Abdul-Mateen
Abdul-Mateen

Reputation: 71

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

Upvotes: 0

PN10
PN10

Reputation: 1948

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.

Upvotes: 3

Vladyslav Matviienko
Vladyslav Matviienko

Reputation: 10871

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.

Upvotes: 2

Related Questions