I have an app on Google Play targeting minimum Android 2.2. Now I want to upgrade the app to at least Android 4.0. I know I have at least one user who is using Android 2.2. What will happen to this user, will he/she still be able to use the app but without the new features or will I loose this user/customer?
He/she will not receive the update, but will still be able to use the app as long as it is backwards compatible
Check this page from Android on the topic: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html
Teeh user will still be able to use the app (if it is backwards compatible with your backend), but the user will not recieve any updates.
I need to include a new library into the project, but it's min SDK version is 14. The app (150k users) min SDK version is 10.
I opened Play Developer stats and saw that there are approx 3% of users with version lower than 14. This is a paid app and I cannot simply exclude them.
Can anyone tell me if these statistics include total number of devices installed this app or active number of devices actually using this app?
I am confused because I cannot find device with API older than 14 in Crashlytics logs (they represent actual users using app on the daily basis).
So can I trust Crashlytics and simply declare that these 3% are non-active users?
title says it all: "Current Installs".
Those are the number of devices that have your app installed. Maybe they even never opened the app or maybe opened it a couple of times but never again.
Yes, Crashalitics stats will be based on active users, not just instalations.
On a side note you have alternatives:
you can force the API to 10 and check during runtime the device API level before calling anything on the library that will use it. (if possible)
you can use build flavours on gradle to only include those new features from this library on one build, but not the other.
you can upgrade the app with the new API, but keep the old version on Google Play (old devices will still be able to download the old version of your app).
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.
How should I make the choice ? What are the parameters I should take into account ?
First of all you should take into account relative number of devices running a given version of the Android platform
Have a look at Android versions market share. I would develop for 1.6+. If you will realize in the middle of development that you want some API feature from newer version, you will have 3 choices:
Don't use that feature
Detect Android version from the app and then decide what to do
Change required Android version in your manifest file and project settings
If possible, you should support the oldest Android version still in widespread use. That would be 1.5. If you need features from later versions, you might consider requiring newer versions, but if you can do your work on the oldest version still available, you should to increase the number of people who are able to use your app.
The Oldest version that supports all the functionality your application requires.
For example: Your app needs multitouch? Target version 2.1
My application doesn't need any functionality introduced in newer versions, so I target 1.5
I agree with the answers posted above, and I would add that on the android API reference site, most of the time the minimum API level is specified (http://developer.android.com/reference/android/package-summary.html).
You can have a look at this page to identify the Android version associated with a given API level: http://developer.android.com/guide/appendix/api-levels.html
Personally, I develop everything for 2.1. There are only a handful of devices that still run <2.0 and most of those people have already put custom roms on them already. I know it kind of screws people with older phones, but I don't like the idea of crippling my app just to make it backwards compatible.
Also I feel like developing for >2.0 encourages people to upgrade their phones =P
#Falmarri: I see some flaws in your logic. Usually I'd tend to follow the same path as you if I'd be developing on another Plattform, like Windows. I do my C# applications always against the latest (non-beta) version available, as the .NET Framework is freely available for everyone (take out the new releases not being available for Win2k, which is almost 10 years old now).
With Android this attempt don't work. A majority of the devices which run 1.5 and 1.6 do it because there is no update for this device, as the manufacturer stopped developing new versions for this phone (either to motivate users to get a new upgraded one) or because it's to time intensive to make backports to this "old" devices.
So this uses don't have the "free choice" of upgrading their phones. Technically it's possible of course with rooted/custom ROMs, however most users do not have the technical knowledge to root/flash their devices with custom ROMs or don't want to lose their warranty.
So if you want to offer your App to as much people as possible, you have to develop it in mind with a much older OS version. In Android case, against 1.5.
And this is basically what I do. I've done my Apps with 1.5 in mind.
If you are developing using Android Studio:
1. Go to Tools --> Android --> AVD Manager
2. Click the Create Virtual Device... button of the AVD Manager dialog.
3. Select a Device on the "Select Hardware" wizard page of the dialog and click Next.
4. In the bottom right of the "System Image" wizard page you will see the following:
If you click the "API level distribution chart" link, it will provide you a summary of cumulative distribution by API level. I assume the information is kept up-to-date with each release. From there you can click on an API level to get specific information about that API level. Based on the information presented there, you need to use API level 18 or lower in order for about 75% of the current Android Market to be able to use you application.
Perhaps this is the type of information you are looking for. Hope it helps!
This is a direct quote from the Android Docs:
Generally, it’s a good practice to support about 90% of the active devices, while targeting your app to the latest version.
In a practical sense, this is impossible unless you had an unlimited budget.
Even Android themselves are only releasing security updates from version 8 onward.
As of right now, I recommend supporting Android 7 onward. This should cover 57.9% of market share.
If you scroll to the bottom of this page, there is a table that shows Android support information.
It will be updated monthly as the figures I quote above will change with time.
SoundPool has a serious bug in it in Android 1.5. I fixed it with a workaround, but since it really limits my app, I want to target 1.6+ for the next version of it.
I am wondering: What happens when I release a upgrade that has a higher target SDK version then the previous version of my app? Will only 1.6+ users be able to upgrade their app? Or will also the 1.5 users be able to upgrade since they have the program already installed?
Anybody experience with this?
Since you answered one of my questions, I thought I'd take a look at your questions:-
From what I've read on the Android dev site:-
The manifest holds the MINIMUM version that the APK will support. Only users with the same version or higher of that SDK will be able to even see you App in the Market.
Therefore, to answer your question, YES, only users with OS 1.6+ Android will be able to upgrade. I released an app once, set to 1.6, and wondered why I was getting less downloads, then realised what I had done, set it back to 1.5, and all was well.
Is there anyway you could get the newer 1.6 source for soundpool, add that to your app, and use it when version 1.5 is detected (or, just use it all the time).
Lots of hassle I know, but just a thought.
Havn't got any experience with this but that a 1.5 user can use an app targeted for minimum 1.6 seems highly unlikely. They will probably be informed that your app no longer supports their platform or just not recive the update.