Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Via developer.android I still see that API 10 (2.3.3) still has a large usage, and it would seem to be good to support it; however, I do see that API 16+ (4.1+) are increasing in usage pretty fast. It looks like it is doing so by reducing usage of API 10.
I have been wanting to see a chart that could have showed be the usage of API 10 over the years and see the RATE at which it is being reduced by. I have looked at Google's Cached version, but that only take me back a week. I have looked at Wayback Machine's version, but they don't contain the pictures anymore!!
I know that API 10 (basically all of Gingerbread) is being used less and less, and I am just trying to figure out how long from now (based on trajectories) when API 10 will be basically a real question if it should be built for or not...right now it kind of is a necessity (33%)...IF you look at it in a static context!!
Is it worth the time and money to implement API 10 if in 6 months (or 1 year) from now that percentage is only 5 - 10%?
According to the docs:
The dashboard for Platform Versions is updated regularly to show the
distribution of active devices running each version of Android, based
on the number of devices that visit the Google Play Store. Generally,
it’s a good practice to support about 90% of the active devices, while
targeting your app to the latest version.
emphasis added
IMO, it doesn't matter if Gingerbread will vanished within 6 months. Until there you could lose a lot of clients to your competitors.
OK, a lot of the ideas of whether to do this are subjective in nature. I have seen suggestions pointed out by Exception-al before...with it being good practice to support 90% of all active devices. I do agree with that on a high level; however, my question was pointed at the (near) future, and trying to predict that from past data via information Google releases in its Dashboards.
In a static context, the 33% would seem very reasonable to implement it as a minSdkVersion. However, with my research, I stated This is subjective, but seems like the drop in usage will be large in the next 6 - 12 months. I just want to know if I am right...or wrong., and I have recieved the following I think your time frame and percentage estimations are reasonable. – FoamyGuy
However, that is still very subjective! I want data to back up my thoughts.
I found this one chart before...now I can only find a YouTube video with it here, but the level of detail is bad. However, I just found Android Platform Usage in Wikipedia! Which has a saved history!!
This is NOT the best format...but it gives me some actual real data to go off of. I guess I will start a discussion there if someone could go through all the info and publish that data on that Wiki, or elsewhere.
NOTE: If anyone else finds something better, then I will accept there answer
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
from the above link
Selecting a platform version and API Level
When you are developing your application, you will need to choose the platform version against which you will compile the application. In general, you should compile your application against the lowest possible version of the platform that your application can support.
You can determine the lowest possible platform version by compiling the application against successively lower build targets. After you determine the lowest version, you should create an AVD using the corresponding platform version (and API Level) and fully test your application. Make sure to declare a android:minSdkVersion attribute in the application's manifest and set its value to the API Level of the platform version.
Set your min sdk to the lowest api level that will support your app. Set your target api level to the highest api level available.
Examples of setting min to 18
Using Network Device Manager so home networks are aware of your app.
Using low power bluetooth
Examples of setting min to 7
Using the action bar (support v7 library)
Examples of setting min to 4
Using fragments (with support library v4)
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 10 months ago.
Improve this question
I think I am not understanding how the programming knowledge of Android Studio works. I mean, I have seen many courses on the internet that are focused in a certain version of Android Studio. So if I learn Kotlin of android 10 will be useless beause now only Kotilin of android 12 is usefull? Will i have to learn a new kotlin lenguage everytime a new version of android is comming? I am studying the programming language of "c" and it doesn´t matter what version you are using that everything you learned of "c" will be useful for any period of time. But I have seen that in kotlin is different,so, does the programming language of Kotlin change depending on the version of android that you are working on? What is the difference between working on Kotlin android version 11 that Kotlin android version 12 on Android Studio? Thanks
No it won't be useless. You need to distinguish between the programming language Kotlin and the Android Framework and its APIs.
If a new Android version comes out, it doesn't mean we start writing apps from tabula rasa.
Every year, with a new Android version, Google introduces a few changes to how things work or extend the capabilities. For us as Android developers that means that we might need to consider new restrictions to permission management or things like that.
To summarize: The Android OS version has nothing to do with the programming language Kotlin itself. You are programming against the Android API version using Kotlin. You don't need to learn everything from the beginning when the next Android version comes out.
Old, abandoned Android apps generally work perfectly fine without modifications on newer devices - I still use plenty of such apps to this day.
However, if you were the developer of such an app, and you wanted to, say, push a small update to fix one minor thing, you would be forced to update your app to meet the standards of current Android versions first, or otherwise your update wouldn't be accepted on Google Play.
Example: in the past apps used to ask for all the permissions at once before installing, and while you probably can still find such apps in the Play Store, you wouldn't be able to publish such an app nowadays.
Instead, you would need to adapt your hypothetical old app to use this new pattern of asking for permissions right before they are needed first.
The Kotlin programming language is the same Kotlin programming language, there are no differences here between Android versions. New Kotlin releases generally only add new language features, they don't delete anything that matters, there is no need for you to worry about this.
For each Android app you make you choose a target Android version and minimum Android version (you can change them later).
Target version
The target version should generally be the current most up-to-date Android version. That is the version of Android that you designed your app in mind with. You should only later increase this number after you learn what the new guidelines, standards, features, etc. are in the new Android version - you will often need to change something in your app when you decide to "upgrade".
Minimum version
The minimum version is the oldest version that you want to have to keep in mind.
I don't really have good examples at hand here, but imagine support for flashlights was added in Android 5. So if set your minimum version to, say, Android 3, you would need to add a condition if your code to define what happens when the user is on Android 3 or 4 that doesn't have the support for flashlights. You would need to display a message to them for example, or make the your flashlight button grayed out and unclickable.
On the other hand, you could just set the minimum version to Android 5, and then you wouldn't have to write this code, because you could just assume that all devices that will be able to run your app know what a flashlight is. So that's less hassle for you, but it also means that less devices will be able to use your app.
Changing Android versions means improving Android phones operation system with new features. It does not have any kind of impact on Kotlin or Java language. You will use same Kotlin for all Android versions.
I know that my question is quite generic and maybe there is more than one approaches to take that decision. But I would like to listen different approaches that maybe I haven't thought since now.
Also, forgive me if stack overflow is not the right place for questions like this (since it is not technical and specific) but I strongly believe that there is not more appropriate place for this question than here. Also I am pretty sure that this subject may be interesting for many android developers here.
So, when I have to make that call, first of all
I consider the official statistics of each distribution. So, I take a look in diagrams like this. Of course we have to keep an eye to the market and to consider very seriously what will be the future of our app one or two years later
A second factor can be the api restrictions, but if you face this problem, sometimes is easier to decide.
Least but not last is the specific market statistics and trends. For instance if the app is paid then you go to more specific statistics, for example Android L users spend more money on google play than the older version users.
All these thoughts became more strong after the release of Android L which is in my opinion the most competitive version against apple. Android L encourages the use of Material Design , contains cool animations and ifrom the point of view of speed , memory management and more technical stuff is way better than the older versions (as it supposed to be).
Thank you
All my apps are currently using api 15+.
Facebook SDK is supporting 15+ api too.
I would use api below 15 just if needed, you have more support and more easy methods to implement your app with 15+.
Well you definitely should install Android Studio and create new project in it. There will be a dialog, which will help you choose a version, giving a percentage of covered devices worldwide.
For some reason the original Aviary framework has stopped working and this has forced me to migrate our code to use the new CreativeSDK instead.
Unfortunately this new SDK has a minSdkVersion of 14 = Android 4.0, but a lot of our customers still use older versions (a little over 20 % according to Googles statistics for our app).
We cannot release an app update that cuts away that many users, but is there a way to compile the app with a lower api level and then just disable the image editing for the "old api" users?
is there a way to compile the app with a lower api level and then just disable the image editing for the "old api" users?
Tricky question. You can try build the app with api lv < 14 but then the creativeSDK will not be able to compile, resulting in a build error, so no.
Android 4.0 is already ~4 years old. It happens more and more that libraries drop support for older android versions (for good reason I think. Just update already!), as is the case with the creativeSDK. The minSDK requirement went from 2.3 in the aviary framework to 4.0 in the creativeSDK.
Adobe has to have done this for a reason. It is too much of a hassle to provide compatibility for 'old' versions of android, especially for complex functionality.
It is mentioned here, here and here that the creativeSDK now really requires api 14, and compatibility for older versions is not mentioned anywhere, meaning it very much likely doesn't exist.
To come back to your question, I think what would be a solution for you is to create multiple APKs for different API levels. There is some work to be done, but it is officially supported by Android, and the steps on how to achieve it are described clearly in the documentation I linked to.
Other than that, you have two options:
Drop the SDK and use another library.
Contact support and ask if they had forseen this issue and how they suggest you go about solving it.
As noted by Tim, the Adobe Creative SDK supports Android API 14 and up. It won't work for anything lower than that.
If you're using the Image Editor UI component, it's also worth noting that for APIs 14 and 15, the AviaryIntent.Builder will not work.
There is a workaround for that issue documented here.
Update: Note that starting in version 0.9.7 of the Creative SDK, the Image Editor supports Android API 16 and up only. This is noted in the Getting Started guide.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
I would Like to make an Android App .I am just a Beginner .As am at the first stage I need to Know if I make an App for 2.2 version will it work for 2.2 and above it .?
Theres multiple details you should account for.
From the official android developers site:
Applications can use a manifest element provided by the framework API
— — to describe the minimum and maximum API Levels under
which they are able to run, as well as the preferred API Level that
they are designed to support. The element offers three key attributes:
android:minSdkVersion — Specifies the minimum API Level on which the application is able to run. The default value is "1".
android:targetSdkVersion — Specifies the API Level on which the application is designed to run. In some cases, this allows the application to use manifest elements or behaviors defined in the target API Level, rather than being restricted to using only those defined for the minimum API Level.
android:maxSdkVersion — Specifies the maximum API Level on which the application is able to run. Important: Please read the <uses-sdk> documentation before using this attribute.
You can define a target SDK version, a maximum and a minimum SDK version. This means your app will run from minSDKVersion to maxSDKVersion.
You can define this in your Manifest.xml.
To know more about this attribute, and to know what are the pros and cons of your decision, check this.
Each new Android version provides an additional/incremental set of features (to the API) compared to the previous version. So creating an application for 2.2 limits you in the available 'modern' functionality (as it was not yet provided/added).
If you do not require any of the functionality of Android 2.2+, then you design your application for 2.2 and it will (most likely) work on higher versions of Android as well.
Note that some of the 'modern' functionality is provided by the (backwards compatibility) support libraries for older Android versions. So you are still able to use this functionality.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
What features, components , optimisations etc. do developers miss out on if they are developing for older versions like gingerbread ?
Does the support library cover everything thats available on newer versions?
Im a newbie developer and I thank all for the responses.
These words are due to my actual experience with that problem.
You have to use the support library, so some objects are renamed. And also some methods.
Preferences are absolutely left out from the support library (so, you have to use a PreferenceActivity for older versions and a PreferenceFragment for newer ones).
Take in account that you'll be missing some new functionalities.
And the system interfaces vary a lot from OS to OS (so, you'd better provide your cutom theme to overcome big differences in the overall aspect).
And often you'll find yourself comparing the Build Version to that of your running OS to execute this or that method (or to use a new functionality or not).
It's kind of a pain, but it's worth, because you will have more potential users.
disadvantage and difficulties
1) features, components , optimisations will be missed.
2) lot of api deprecated
3) less devices with older versions means lesser users, everyone wants new
4) lesser ui components by means old fashioned ui which will not be a liking for user.
5) lesser feature in older vesrions and functinalities.
6) if you wants to develope something which is for new versions, difficulty will be there to implement in older versions
From my past experience, there are quite a few.
You will experience lack of animation support in the past device. I fixed that by using library NineOldAndroid
You will experience laggy of map fragment on device prior Android V3(Sandwich) and broken screen. Still not sure how to solve it.
If you app has tabs, you may use ViewPageIndicator. You probably want to have swipe to go to next tab feature. But I run into problems with older device when one of my tabs views also have swipe gesture feature. So while new device can detect fast/slow swiping and supports both, I need to disable tab swiping feature for older device.
You will most likely use SherlockActionBar to have a universal action bar.
You will use all of your views with Support library, like Support v4 Fragment, FragmentActivity to support old device.