Take the 2-minute tour ×
Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. It's 100% free, no registration required.

This question already has an answer here:

Is it possible to update a tablet that has android 4.0 to the latest version (4.4.2)? I'm looking into buying a tablet. It has android 4.0 which is cheaper than the other tablets that have 4.0 (which doesn't make senec to me).

share|improve this question

marked as duplicate by Dan Hulme, Al E., onik Apr 17 at 4:58

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Could you tell me the science behind this though? Why is it that a device can not "update" even on the same version number. –  PassingBy Apr 16 at 17:11
1  
It's up to the manufacturer to port new versions of Android to their device and release the update. See also the answers to this and this existing question. –  Dan Hulme Apr 16 at 18:17
    
Didn't see this comment until now. Thank you. –  PassingBy Apr 16 at 18:39

1 Answer 1

up vote 0 down vote accepted

Phones and tablets (especially cheaper ones) generally don't have much storage space, and their other components are not that powerful (low memory, slow processor, etc. The Operating System that runs on them must therefore be kept to its absolute minimal size, and be heavily optimized to the very specific hardware inside.

For example, in order for Windows to support a wide range of personal computers from various manufacturers, it ships with a myriad of different drivers, some are generic to handle multiple versions of hardware (i.e. video cards or sound boards.) This way one or two (32 bit Vs. 64 bit) installation packages can be distributed by Microsoft that would be able to be installed on pretty much any compatible PC. The flip side is that this makes Windows installation huge in comparison.

On the other hand, Android at its lowest level has something called "Kernel". This is what allows the rest of the OS to communicate with RAM, screen, CPU, camera, buttons, etc., and is equivalent to drivers in Windows. See this diagram of Android software stack. Due to the above mentioned restrictions, the kernel must be tailored to perfectly match the specific device Android is to be installed on. This way its size can be kept minimal, but the downside is that it would be incompatible with another device, even from the same manufacturer, that has slightly different components.

The kernel is developed by the device's manufacturer such as Samsung, Motorola, LG, etc. Since it's based on Linux, the kernel's code is open source, but it usually contains some closed-source, proprietary code from other component manufacturers such as CPU or GPU (e.g. Qualcomm or Nvidia) in form of binary blobs. Then there is a layer of customization that manufacturers and carriers add to "stock" android, which is also usually closed-source and proprietary. Sometimes it's a couple of extra apps, but usually these customizations are more invasive in a form of a different user interface, as with Samsung's TouchWiz, or HTC's SenseUI.

When Google releases an upgrade to Android, they are changing all of the Android's software stack, including the kernel, libraries, runtime, framework, and applications. You can already see where the difficulty is in upgrading a device. Google's changes require the manufacturers to update their code for all the drivers for each specific device in the phone/tablet. If Samsung uses Qualcomm's CPU/GPU instead of their own, they will also need to wait for Qualcomm to update their binary blobs. The same goes for every other piece of circuitry: Wi-Fi, Bluetooth, cellular modem, flash memory controller, etc. Manufacturer of each of these components will need to see if Google's changes require them to modify the drivers that will be included in the kernel, so that the phone continues to work normally.

This is also the reason why an Android OS upgrade intended for a specific phone cannot be simply "flashed" onto a different one. Different phone models even from the same manufacturer will usually contain different hardware, thus needing a customized kernel.

Now consider the costs to the manufacturer to upgrade every device model they make every time Google releases an upgrade to Android. Their software engineers must review the changes in the upgraded OS, modify their code for every driver, thoroughly test their changes to ensure their changes don't break anything, and release the final code for roll-out. Now multiply this by every phone model they've released since the last Android upgrade.

Cell phone giants like Samsung or Motorola can afford this process in the name of customer satisfaction and brand loyalty, but small-time manufacturers simply don't have the resources for this. There's no incentive for them to upgrade the devices they are probably already selling at razor-thin margins in the first place.

share|improve this answer
    
Wow. I truly appreciate this. Thank you. Not to take away from your post, let me see if I truly understand this. Is it that diffrent versions of android OS is linked to hardware of the device which is linked to the way the manufacture code(kernal). It will not be cost effective to "update" old android devices because of the old hardware built in them. –  PassingBy Apr 16 at 18:31
    
@PassingBy That's the gist of it, yes. If you follow the link Dan posted in his comment, you can see that what I posted is actually is an over-simplification of the actual upgrade process for a manufacturer. –  Chahk Apr 16 at 18:35

Not the answer you're looking for? Browse other questions tagged or ask your own question.