How to test device compatibility? - android

My app is not compatible for my device through Play Store.
I am constantly testing on my device and it works properly.
How can I learn what is not compatible?
1.1 I have only 1 'uses-feature', for 'android.hardware.telephony' and it is 'required="false"'
1.2 My 'compileSdkVersion' = 23, 'minSdkVersion' = 16, 'targetSdkVersion' = 23
1.3 My device is Nexus 5 with Android 6.0
How can I test if a fix works without uploading to the store? Currently I can install and run the app on my device through Android Studio but not through the Play Store.

You can write unit tests that run on your device/emulator to get the features available on the device/emulator and compare them with your app's required features.
The PackageManager.getSystemAvailableFeatures() method will be helpful in that case.
Another approach is to check the output of the aapt tool by the SDK to see the permissions and features defined by your app, these permissions and features dumped by the tool are those who GooglePlay will use to filter your app.
https://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing

The aapt tool may be useful in some cases, but the easiest way I've found to test device support is to upload an APK to a closed track in the Play Store Console (under Release management > App releases > Create closed track > Manage):
Then check the device catalog (under Release management > Device catalog):
I had previously excluded a ton of devices from the compatible-screens part of my manifest. I was able to test that the new APK corrected this by clicking on one of the devices in the catalog and expanding the "Track-level status" section on the next page:

Related

Migrate a WearOS APK from embedded to Multi-APK - What version code to use to retain mobile APK?

The app has used the embedded wear APK distribution model, but since this distribution method is no longer supported since January, the app has been migrated to use a separate Wear APK.
Followed the guides to set the wearAppUnbundled true flag in the mobile APK and set the <uses-feature android:name="android.hardware.type.watch"/> along with <meta-data android:name="com.google.android.wearable.standalone" android:value="false" /> in the Wear APK.
The only question is what app version code to use when uploading the Google Play?
Let's say version 100 is the legacy version with the embedded wear APK. (minsdk 19)
Version 300 is the new mobile APK without the wear APK, this has been uploaded to the Play Store. (minsdk19)
Now, what version code to use for the Wear APK? (minsdk 25)
If it's set to version code 200 then when preparing the release the Play Console accepts it. However, it says that 300 will not be included in this release. And this is what is scary as one might think that the mobile APK will not be visible on the Play Store if it's released as is based on this message.
Should the "Include" option next to the 300 version APK in the "Not Included" section be used to force the Play Console to keep that one active?
Based on the Multi-APK versioning guide:
This scenario might be "shrinking" since the Wear APK is more restricted (due to the min SDK level and the uses-feature declaration).
However, since the Wear APK uses a lower version code, the capable devices should still receive 300 by default? This is what is confusing, as based on this I'd assume that the 300 version should not be affected at all by uploading a more restricted lower code APK.
The most important thing is to have the new mobile APK as is, and it shouldn't disappear from the Play Store.
As it turns out, it's easy to solve this. In this case, the Wear OS APK had to be uploaded with a higher version code, version code 400, for instance. On the release page, the Include button had to be used to include the 300 version (phone APK).
It kind of make sense, but if one is new to Multi-APK release the messaging is not straightforward and if the app has many installs one thinks twice before taking such actions.
(Probably should have uploaded both APKs in the first place when released the new phone APK)

React native app-release build not working for some android devices

I gave a build for android using gradlew assembleRelease.
but app-release.apk file not working for some devices like honor 9i, Redmi note 5 pro.
Make sure your app is compatible with OS of your device. Enable installation from unknown sources. Sign your app before sending .apk. It is important due to security restriction of some devices.
signing your app
Happened to me on some devices as well. Even if you allow installation from unknown sources turned on. Some devices alter the final .apk file (maybe for security reasons). So we used android playstore publish for distributing app as test/beta builds. Pick one appropriate for your pre release distro. It should work fine.

Android Studio Preview 3.0 - Application installation failed when running instant app

I am new to running instant app. I have created a new "Hello World" project with instant app support, according to android developer documents.
But, when running "instantapp", the following error occurs:
I would appreciate it if anyone could help.
Note: There is a known issue running Instant Apps on the emulator image that includes the Google Play Store which will give this same error. For now, please use the emulator without Play Store.
Google Play Services giving statusCode=API_UNAVAILABLE means your device is not able to run Instant Apps for one reason or another. For example, you are not using a supported device or you are not in a launched country. Please see here for a list of supported development devices and here for a list of countries Instant Apps are available in.
The emulator should still work for development and will run outside of any restrictions. For instructions on setting up an emulator for Instant App development see here:
https://developer.android.com/topic/instant-apps/getting-started/setup.html#setup-emulator

How to test In-app Billing on an emulator?

Is it possible to disable in-app billing/purchase and test my application on an Android Emulator? I want to do some functional testing of my application on multiple emulators.
Later on I would test the 'in-app billing' on a real device.
Anyone have experience?
How should I do this?
From Google:
http://developer.android.com/guide/market/billing/billing_testing.html
To test in-app billing in an application you must install the
application on an Android-powered device. You cannot use the Android
emulator to test in-app billing. The device you use for testing must
run a standard version of the Android 1.6 or later platform (API level
4 or higher), and have the most current version of the Android Market
application installed.
Update 2022
Recently re-checked:
Even if we Emulate a system-image which targets Google-Play (instead of Google APIs),
update Google-play services to latest,
and follow the "Goole Wallet" app's and/or "Google Pay" app's add-credit-card form till end successfully.
Said App instead of adding credit-card as payment-method, just shows message:
Note that the message is confusing, as we were trying to add credit-card, and did not try to use "Tap to Pay".
Install an emulator that has already google playstore installed, on a system image that supports google service api
My emulator spec:
Pixel 3a API 31
ABI: x86_64
System image: Android API 31 (Google Play)
Create a closed testing track in google playstore console
Add your gmail to license testing and closed testing email list
Wait for your closed testing to be approved and available for testers.
If you're using an existing emulator, please wipe data and cold boot
Login as a tester account in gmail app as the first thing when you launch the emulator
Browse closed testing invitation url, and accept invitation to take part in closed testing track
IMPORTANT Make sure you're using the same application id (e.g. com.your.company.app), version code (e.g. 1.3.0) and version name(a.k.a build number) as the closed testing binary.
That's all. Test payments in the emulator.
For step 2 ~ 4 you can refer to this wonderful doc from revenue cat: https://docs.revenuecat.com/docs/google-play-store

Android Developer Console : how to select devices on Android version

I published an app to Google Play, but some of my users are unable to find it using their device.
The min apk for the app is 11 (Android 3.0).
When someone uses for example a Samsung Galaxy SII with Android 4.0, the app can't be found because the initial release of the SII was with Android 2.3. With a SIII it's no problem.
In the developer console, the console automatically checks to see which devices are compatible when uploading the apk. As developer, I can disable devices for download, but not enable devices.
Does Google Play check the current version on the device or does it uses the versio, of initial release?
How can I reach as many as possible devices? When I lower my min APK in the manifest, I get compilation errors.
Thanks in advance
That's a really good question. Lowering your minSdkVersion or publishing multiple APKs is the best solution to reach many devices, your problem with this approach is that probably you are using some API features that aren't present in older APIs so that's why you're having compilation problems.
http://developer.android.com/google/play/filters.html#manifest-filters says:
Example:
The manifest includes uses-sdk android:minSdkVersion="3", and the
app uses APIs that were introduced in API Level 3. A user is searching
for apps on a device that has API Level 2. Result: Google Play will
not show the app to the user.
So I assume google will filter based on the current API version.
Can you post your app link?

Categories

Resources