Freezing Android APK version for older SDKs - android

I understand how multiple APKs work on Google Play, but so far I've supported a single APK for V7 (2.1) and up. I'd like to start using Android 3.x-4.x+ features that could be more difficult to make backwards compatible, and I wouldn't mind not having to build in that growing compatibility library. But I still want to make the product available to Android 2.x users, even though that version will be "frozen" and not receive future product enhancements.
So how should this best be done? I could use the basic multiple-APK approach, but then users of 2.x devices might see things in the product description that are not in the APK that they would be installing. But would the version number show up correctly based on the APK that matches the user's device?
Any other ideas from someone who's done this?

Related

Manage multiple .apks on Google Play

We create apps and distribute the on Google Play and have gone years being able to create one .apk and distribute to all devices.
Recently we found one device (Samsung Galaxy Core Prime SM-G360V
Android version: 5.1.1) that we will need to make a special build.
It is probably possible to find something that will work on all devices, but I just don't want to force my thousands of users to update their app just because of one phone.
I have read this:
https://support.google.com/googleplay/android-developer/answer/7353455?hl=en
and I have read this:
https://developer.android.com/google/play/publishing/multiple-apks
They don't really go over a strategy for doing what we want to do:
Leave our existing .apk in the store and keep the 5.1.1 device from downloading it.
Add a new .apk that only the 5.1.1 device will download.
One element of my concern is that the instructions talk about a list of excluded phones but they don't talk about a list of supported phones.
I would like to exclude a phone on our existing .apk; and set a supported phone on the new .apk (implying that all other devices are excluded).
This is also making changes to a production app without really being able to test so we have to have clear instructions of the side effects of anything we are changing on Google Play.
Using a whole APK variant for a single device is pretty unusual. Much more common reasons for using Multiple APKs are:
having an old version for older phones on old SDKs, and new versions for newer phones
having different versions for different native libraries
having different versions for different densities of assets
For all of these use cases developers are now encouraged to use the Android App Bundle rather than publishing multiple APKs.
To be honest, if you are only doing the change for one phone I'd encourage a single "if" statement in the code. It's a pain for users to get an update, you are right, but if the change is small, Google Play patching and compression should keep the update size pretty small.

Is there a way to set the max version of my android app that a group of users are allowed to download?

I have an android app that is a counterpart to our software product that we sell to customers.
When we sell our product to a company, I need an easy way to give those users access to the app, including updates, product description etc.
The reason that a service like Google Play will not work is, that different customers require different versions of the app depending on their version of the main software.
Some customers are unable/unwilling to stay up to date, and we need to be able to give out different versions of the app depending on their version of the software.
Is there a way to set the max version of the app that a group of users are allowed to download?
This is a really good and difficult question. As someone who has worked on app targeting for many years on Google Play I've been racking my brains for the best way to do this.
The trouble is the completely different business models. Android works on the principle "buy the app once, get upgrades forever, usually automatically". Your counterpart computer software clearly works on a slightly different principle.
I can't think of anything that works well. Sorry about that. Some possbilities which are all broken in some way:
Have a different package name for each version of your app. eg com.myapp.v1, com.myapp.v2 etc. You could have the counterpart software provide the package name in a link to be helpful.This is bad because it punishes users who do upgrade, they have to manually install the new version each time. It also means reviews and ratings wouldn't all be associated with the app. It's a pretty terrible idea.
Make the android app versions always be backwards compatible with all versions of the counterpart software. We kind of do the opposite with the Google Play servers. Because we can't guarantee users upgrade Google Play on their phones, the server has to be compatible with almost every version of Google Play (and Android Market) ever shipped. It's a lot of work, but keeps users happy. You could make sure your app always works with old counterpart versions. You could always have a "sorry, you are getting a degraded experience because you haven't upgraded.
Sorry I can't help more.

What happens to android-users if I release a new version with higher requirements?

I'm currently involved in an open source project which I regulary release in the Google PlayStore. As the statistics of android-usages show that less than 10% of my users use android 3 or lower I started to wonder if I should switch to Android 4.X. This gives me some more functionality which I can't include at the moment (SettingsFragment for example, which isn't even inside of the support library).
When I release a newer version with higher requirements in the PlayStore - what will happen to my users which don't fulfill this requirements? What about users who want to install my app with low android-versions? Is my app hidden for them as soon as I upgrade the app? Is there any chance that my current version of my app can still be found by lower devices and the newer version is available for newer devices? I would like to avoid having two seperate apps in the playstore as I would lose a few people.
I couldn't find anything in the Google-Docs so I needed to ask for help in this glory community ;)
You can target multiple different APIs using multiple APK's. Just use your current version for old versions and create a new APK for everyone else. More here: http://developer.android.com/google/play/publishing/multiple-apks.html
Hope this helps, let me know if you need more info.

Android minSdkVersion

I've programmed my app with Eclipse and android 2.2. However I think that my app would work for previous version and so it would allow more users to use my app. The problem is that I'm not sure... for instance I'm using Gestures which I think is a more recent feature... but otherwise I'm just using some Button, ListView, and WebView.
So is there a way to detect automatically the Minimum Sdk Version needed ( by checking which function my app is using) ?
I can't download the SDK of each previous version of android and test it until it doesn't work ...
Thanks
I can't download the SDK of each previous version of android and test it until it doesn't work ..
Why cant you? This is what the rest of us do. Create various different Emulators and test it out. I've released many apps by testing this way.
Take a look at the Compatibility page on Android's developer website.
It has some great information on how to make sure your application will work on different versions of Android and how to stop users from downloading the application if they do not have the right features on their device. In your case that would be the gestures feature.
To manage this, Android defines
feature IDs. Every capability has a
corresponding feature ID defined by
the Android platform. For instance,
the feature ID for compass is
“android.hardware.sensor.compass”,
while the feature ID for Live
Wallpapers is
“android.software.live_wallpapers”.
Each of these IDs also has a
corresponding Java-language constant
on the PackageManager class that you
can use to query whether feature is
supported at runtime.
To be totally sure you have to test your app against every platform version you target. Otherwise users of your app will do it for you (and that might be not good for app rating).
On the https://developer.android.com/about/dashboards/index.html page you can see the latest up-to-date platforms share info. So just decide how many potential users you're going to leave without your app :)

App not shown in 2.1 Market

I published several free and paid app in the Market. I recently get
several complains from customers about not finding my app in the 2.1
Market. Even if they have bought them before, they can't find it in
the market or their download list after updating to 2.1.
Can anyone tell me what the problem is? My apps only require minimal SDK 3..
Thanks a lot!!
Update:
It looks like that they are not shown because they have copy protection enabled. Is this a bug in the Market?
I am having this difficulty also using my ROM OpenEclair (www.openeclair.org)
This only occurs on 2.1, but if it is a custom ROM - they may run into the trouble that the dev is using a Market from 1.6 instead of 2.1
Another possibility is using a 2.1 Market from a diff phone (such as the Droid Eris's Market on a Dream/Magic)
I think I found the answer and it has to do with recent changes in Google market filters on Jun 1st, 2010. Take a look at the following link:
http://developer.android.com/guide/appendix/market-filters.html
I found in my case that the app was hidden in some phones since I had included the following entry in my manifest:
It is because copy-protection is depreciated. Every build or release needs to be whitelisted by google as secure enough to have copy-protected apps. That way they can "ensure" it wont be copied.
From:
http://developer.android.com/guide/publishing/licensing.html
"Replacement for copy protection
Android Market Licensing is a flexible, secure mechanism for controlling access to your applications. It effectively replaces the copy-protection mechanism offered on Android Market and gives you wider distribution potential for your applications."
Use the licensing instead in order to hit a larger audience or customer base.

Categories

Resources