I'm a CS student and with my team we're going to realize an android application for our Software Engineering course. We're not Android developers and we using this opportunity to learn how to do it.
We know it's available the 3.0 version but that basically has tablets as target. Our target is smartphones, so the question is: should we stick with 2.3 or should we use 3.0 API.
I know the natural answer would be "2.3" but it's not really clear to us where "3.0" is going.
I would even go for 2.1 or 2.2 - 60% of the market uses 2.2, 20% 2.1 and 6% 2.3.
3.0 is atm only available for tablets - targeting this will limit your target market a lot, as no mobile handsets will have 3.0 any time soon.
See also this q&a: What version of Android should I develop for?
3.0 is the future, no doubt. But 3.0 is currently just available for some tablets. Almost all smartphones are currently using some 2.x version.
As you can see here, the version 2.1 and above are widely used. So I personally would target 2.1 and above.
Depends on your application's scope.
If you want to aim at as many people as possible, you should go for 2.1, or 2.2, if you don't use any specificity from the 2.3 SDK (NFC for example).
It is important to know that, because only about 10% of Android phones are running 2.3 (and even less I think). More than 70% have 2.1 or superior, so if your target is mass distribution, 2.1 would be nice. (You can develop an app under 2.3 SDK aiming at lower version as well, just add it in the manifest)
Otherwise, if your application is tablet-aimed, use 3.0. Otherwise go for 2.3.
Related
I found that Jelly Bean is still taking a fair amount of installed devices.
If I plan to make an application for Jelly Bean, do I have to set source code compatibility 1.6?
Jellybean is 4.1-4.3
If you are looking at that api 16 that's different than android version 1.6
At this point, it looks like anything under 2.2 (froyo) is on less than 0.2% of android devices.
In this graphic you can see a distribution of Android platform versions used by Android smartphone owners in October 2015. The figures are based on the number of Android devices that have accessed the Google Play Store within a 7-day period ending on October 5th, 2015.
http://www.statista.com/statistics/271774/share-of-android-platforms-on-mobile-devices-with-android-os/
This graph shows the most common SDK installed on Android phones and tablets used by AppBrain SDK users as of December 8, 2015.
http://www.appbrain.com/stats/top-android-sdk-versions
So I'd suggest anything 4.0.x and up will suffice for making most of the public happy with your apps.
No, you don't need to. Almost nobody uses 1.6 now.
I am a beginner on android programming. I am at the first at all. I wanna learn some important point.
Now, I am installing the programs and platforms which I need to develop Android Apps. On the SDK Manager there are few options to download Android API.
Which one should I prefer? I want to that, my app will run on all android roms and versions like ICS or JellyBean.
Thanks!
In order to support as many users as you can, you should opt for the lowest version API, since apps written for an older version of Android will work for future versions as well (although they may not be optimal). Once you need a feature in a later version, you can increment your minimum SDK version.
I would look through the different SDK versions (e.g. 2.1) and see which features (and/or permissions) you need for your app.
Keep in mind that older phones may not have certain capabilities, and you may not be able to support them. Therefore you should weigh if what you're adding is worth alienating the users you will no longer be able to support. Android provides a table of market share per version.
You mention that you want to support ICS (4.0) and Jellybean (4.1 and 4.2), which together control a little less than 50% of the Android market. It is worth looking into supporting Gingerbread (2.3) as well for another 45%.
Another option of course is to branch your code depending on the user's OS version, but this requires a little more maintenance work. However, if you are supporting pre- and post-Holo-themed versions (ie for the action bar), it may not add that much overhead.
It really depends on your target market, purpose, and familiarity with Android.
Android maintains forward-compatibility which means an app designed for 2.1 for example will work on later versions (in most cases). However there are some features added in later versions which are only supported starting with a certain SDK version.
This page may be helpful for you
Should I use the latest 4.0 or 2.3? My phone has android 2.3.5 and it's a HTC Desire HD.
Does the runtime matter or will the applications work still?
First you should choose what device versions you'd like to target: http://developer.android.com/resources/dashboard/platform-versions.html
Based on those numbers it makes sense to currently support Android 2.1 and higher.
Also you should read about <uses-sdk> directive:
android:minSdkVersion and maxSdkVersion define the version range to which your app will be available. If device has Android version out of this range then app will not be visible for it.
targetSdkVersion is the vesrion that you are targeting and that you actually tested against. This attribute triggers Android's compatibility behavior: for instance targeting 2.3 will not show the new look on 4.0 devices.
I think this url will be helpful :
http://developer.android.com/resources/dashboard/platform-versions.html
All versions of android are backward compatible which means that an application designed to work with 2.0's api will work on 4.0 so it basically comes down to whats your target customers. there's still a vast majority that uses 2.x (unfortunately) so it is probably smart to develop for 2.1 and up..
but anyway this is a pretty common question and i'm sure google will produce a lot of useful information in the subject.
I'm starting to broad my developer skills also to the Android development.
I installed all the tools and configurations and every thing seem great, As a default settings I install the 3.2 SDK, but there is not too much docs on that one, mode of what is out there is on the 2.x SDKs.
Is it like IOS, does android have a good backward computability? Can I stay with the 3.x and count on it (with the features that are in the 2.x SDKs) to work on 2.x phones? What are the common version in the Android devices this days? I have lots of newbie develop questions like that, as i want to start from a good starting point and there are lots of materials and tutorials over the web that are not up to date.
Also, does any one know about a good site for this kind of Q&A?
Thank you,
Erez
As of July 5th the version with the largest market share (59.4%) is 2.2 (API Level 8) as shown here
http://developer.android.com/resources/dashboard/platform-versions.html so Consequently I would recommend using that as a starting point unless you are solely focusing on the new honeycomb tablets (<1% market share).
As for backward compatibility, android is completely backward compatible for the most part. Unless of course you use a new feature that is only available starting with a certain API level. Google's Android market is good about only allowing apps that will run on a certain API being visible to that phones user. This is enforced by the API level as recorded in the manifest file that is created with every Android app and set by the developer.
To help you with the API level, the SDK docs show what API a feature/object started with in the upper left hand corner. You can also view the specific changes in each platform and it's corresponding API level at http://developer.android.com/sdk/index.html.
As for a good website to get started I would recommend the developer site at developer.android.com and this website of course. Also the book Android Wireless Application Development by Shane Conder and Lauren Darcey (2 ed) Is very good. (I am not connected with the book just currently reading it). Make sure you get the latest edition.
Hope this helps,
George
Above is good info, but it would be advisable to develop for 2.1 and up at the moment, considering as of this answer's writing, 2.1 makes up 17.5% of the market and 2.2 makes up 59.4% of the market.
http://developer.android.com/resources/dashboard/platform-versions.html
OP should also be advised that version 3.x is specifically for tablets, so that may not be the best choice for a starting developer. My advice is to go with 2.1. Most of the documentation is up to date with that, and you won't have access to things you don't need yet (fragments, tablet-specific things)
Hope this helps!
You can read about application forward and backward compatibility in the docs.
Generally apps are forwards compatible but not backward compatible - new APIs introduced in one version are not available in an older version.
This pie chart shows distribution of devices accessing the Android Market and based on this I would try to target devices using 2.1 or newer to cover most of your users.
Your decision should be based on whether you need a feature introduced in a specific version. For example, if you want to add NFC to your app, you'll need Android 2.3.3 or newer, but otherwise there's no reason to exclude older devices.
I recommend learning about Fragments and using the compatibility package to use them on targets below 3.0. This will make it easier to reuse view elements on both tablet and phone devices. Note that if you only intend to develop for phones, 2.3.4 is the latest phone version of Android at the time of writing. Later this year, 3.0 for tablets will merge with the phone version to provide a unified OS version as with iOS.
Android 3.2 is just released publicly on friday, July 15th. You can start-off with Android 2.3.3 and 3.2 installation and development.
Android applications are mostly forward compatible. (But not always)
The best place to find all your answers is developer.android.com
I just uploaded my first app to the Android marketplace and one comments says, "It force closes on G1". What version of the Android OS does the G1 use?
Originally the G1 shipped with 1.0, then upgrades were released to update the phone to 1.1, 1.5 (Cupcake) and 1.6 (Donut).
So you would expect most users to be on 1.6. However, there are a couple of extra things you may want to consider.
Firstly, some users will be running custom firmware. A quite a few G1 users - me included - run community firmware on their devices, such as CyanogenMod. Often these releases are 1.6 releases with 2.x functionality ported from the Android Open Source Project (AOSP) tree, so you could consider them as a hybrid release, putting the phone somewhere between 1.6 and 2.x. I wouldn't worry about the people running custom firmware since they are so many different firmwares and builds of each firmware, and people who put custom firmware on their phone usually expect to fend for themselves. I only mention it in case you get some weird bugs you really can't replicate which might be caused by this.
Secondly, I'd recommend looking at the Android Device Dashboard as this shows what fraction of users of all phones are running each release:
At the time of writing 31% of users are still on Android 1.5 and I would guess quite a few of these are running G1s.
So my advice would be to test your application on 1.5 and 1.6 if you want to support G1 users.
The latest should have been Android 1.6, but originally it was shipped with Android 1.0 (Source).
The latest update they've pushed out to the G1 is Android 1.6. They're supposed to be working on trimming down 2.0 to make it fit on the G1 but so far it hasn't been available without hacking your phone.
Currently 1.6 (Donut), this is most likely the last OS version that will be on the G1.
Originally it was shipped with Android 1.0. Now it uses Android 1.6