• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Wrapping My Head Around Android

rootb33r

Lurker
Jan 10, 2012
5
1
This is not a troubleshooting question, it's more along the lines of a request for explanation so I may understand, conceptually, a few things.

I've read a bunch of Wikipedia articles on Android, and so I've come to understand that Android is a Linux-based OS which includes its own libraries and API's. Also, Android versions x.x have their own "vanilla" interface. So Google releases Android 4.0 and it's a fully functioning OS with an interface.

Then you have device manufacturers like Samsung or HTC who take this Android OS and do what with it?

I'm not talking about adding bloatware or anything, but what exactly do they do with the OS to customize it? What, at the core of the OS do they tweak?

I am asking this because I wonder sometimes why certain apps do not work with certain phones (or, for example, on my G-tab running CM 6.1). My thought was that the OEM's just change the appearance of the interface, but why then would some apps not work with certain phones just because of an interface issue, if all of the middleware, libraries, drivers, etc. remain the same?

Also, for the sake of argument, if I were to develop an App, how much time would I spend troubleshooting and making it work with all the various OEM's versions of Android out there?

I would love to learn more about this, so if anyone has a good resource for more programming information that isn't too terribly over a part-time nerd's head.

Thanks in advance. You guys have helped me (as a lurker) numerous times with my G-tab and various things.
 
Interesting question. Let me see if I can answer some of it.

Unlike desktop OS's, mobile operating systems must be lean and efficient to function with finite resources such as memory or power. As such, each device has an optimized version of android for it's specific hardware and carrier specifications. If there were a universal installer for Android that probed the device and selected the correct drivers, it would be so monolithic that it most likely would have room to fit on most devices, so the manufacturers only include (or write) those parts applicable to the hardware. This is why a rom for an HTC Desire will not work for an LG Optimus phone and that each rom developer makes a very specific version for each model.

Apps in the market have a minimum compatibility spec that the phone must meet for it to be available. This is set by the developer (any developers want to chime in here?). It could be processor speed, screen resolution, Android version or available storage that will limit the app's availability to your device. They can limit it so far as be available to only one specific device. For example, there is a game under discussion right now that only seems to be available for the Rezound. That's not to say it won't work on any other phone. Actually, the discussion is that it runs fine on many other phones, but it simply shows as not compatible with anything by the Rezound.

You might find the documentation for developers helpful. Android Developers
 
  • Like
Reactions: rootb33r
Upvote 0
Unlike desktop OS's, mobile operating systems must be lean and efficient to function with finite resources such as memory or power. As such, each device has an optimized version of android for it's specific hardware and carrier specifications. If there were a universal installer for Android that probed the device and selected the correct drivers, it would be so monolithic that it most likely would have room to fit on most devices, so the manufacturers only include (or write) those parts applicable to the hardware. This is why a rom for an HTC Desire will not work for an LG Optimus phone and that each rom developer makes a very specific version for each model.
So each manufacturer customizes the OS not only in the interface but also in the guts so that it works optimally with their product? You're still tethered to your manufacturer for software updates/fixes, so in essenceit's as though there are hundreds of custom operating systems out there. How does this affect the goal of ubiquitous compatibility that Android is trying to achieve?

*edit* Also, how hard is it to port the newest Android X.X version to existing hardware? For example, I had the HTC Incredible before my Charge. It had 2.1, got an upgrade to 2.3 or something, but never actually got to Honeycomb even though it had been out for like 6 months (replaced phones in August). So how hard is it to port upgrades to existing devices? It seems by that empirical evidence that it's quite tedious.

Apps in the market have a minimum compatibility spec that the phone must meet for it to be available. This is set by the developer (any developers want to chime in here?). It could be processor speed, screen resolution, Android version or available storage that will limit the app's availability to your device. They can limit it so far as be available to only one specific device. For example, there is a game under discussion right now that only seems to be available for the Rezound. That's not to say it won't work on any other phone. Actually, the discussion is that it runs fine on many other phones, but it simply shows as not compatible with anything by the Rezound.

You might find the documentation for developers helpful. Android Developers
Thank you for the link. I'm going to read up on the architecture more.

So given the above explanation of the hardware side of things, it would seem to be impossible to support all platforms for a single App. There are hundreds of android devices, and so you must declare for which specifications your App is going to apply? (or for which devices).
I feel like this is pretty lame. This leaves the door open for App makers to only comply with a small fraction of devices (like the game on Rezound). This looks really bad for Android as a whole, because it would seem as though there is almost no compatibility between the hundreds of devices.
 
Upvote 0
So each manufacturer customizes the OS not only in the interface but also in the guts so that it works optimally with their product? You're still tethered to your manufacturer for software updates/fixes, so in essenceit's as though there are hundreds of custom operating systems out there. How does this affect the goal of ubiquitous compatibility that Android is trying to achieve?

The Android for all Samsung phones is generally the same, only the kernels/drivers change. I don't know exactly the depth of their customization, but its quite deep, but not deep enough to be different across the entire brand.

*edit* Also, how hard is it to port the newest Android X.X version to existing hardware? For example, I had the HTC Incredible before my Charge. It had 2.1, got an upgrade to 2.3 or something, but never actually got to Honeycomb even though it had been out for like 6 months (replaced phones in August). So how hard is it to port upgrades to existing devices? It seems by that empirical evidence that it's quite tedious.

Phones will never get honeycomb because thats for tablets ONLY. Phone's that will upgrade still will skip right to 4.0, which is a unified version works for both tablets and phones.
 
  • Like
Reactions: rootb33r
Upvote 0
So each manufacturer customizes the OS not only in the interface but also in the guts so that it works optimally with their product? You're still tethered to your manufacturer for software updates/fixes, so in essenceit's as though there are hundreds of custom operating systems out there. How does this affect the goal of ubiquitous compatibility that Android is trying to achieve?

"customize" might be a poor choice of terms her. More like "include". The customizations that manufacturers apply are the custom launchers (user interface) which is easily replaceable by the user. If you keep your device stock and unrooted, if it is a carrier branded phone, then the carrier provides the updates. If it is unlocked, without a contract then it comes from the manufacturer. Only the Nexus phones get the updates directly from Google. The underlying architecture for each Android version is the same whether it's on an HTC or Motorola. You can't put one phone's rom on another not because of what the rom includes, but because of what it doesn't.

*edit* Also, how hard is it to port the newest Android X.X version to existing hardware? For example, I had the HTC Incredible before my Charge. It had 2.1, got an upgrade to 2.3 or something, but never actually got to Honeycomb even though it had been out for like 6 months (replaced phones in August). So how hard is it to port upgrades to existing devices? It seems by that empirical evidence that it's quite tedious.

Not being a developer or rom builder, I really don't know the process. Your Charge will never get Honeycomb. Honeycomb (3.x) was only for tablets.


Thank you for the link. I'm going to read up on the architecture more.

So given the above explanation of the hardware side of things, it would seem to be impossible to support all platforms for a single App. There are hundreds of android devices, and so you must declare for which specifications your App is going to apply? (or for which devices).
I feel like this is pretty lame. This leaves the door open for App makers to only comply with a small fraction of devices (like the game on Rezound). This looks really bad for Android as a whole, because it would seem as though there is almost no compatibility between the hundreds of devices.

Quite the contrary. It gives developers the control to restrict their apps to devices that they have tested and approved, if they are taxing certain aspects of the hardware, but free to release to everyone if it is a general function app. The incompatibility between devices is minimal. Most apps are available for most devices, so it really is a non-issue.
 
Upvote 0
Android is Linux + Dalvik Virtual Machine (VM) + apps.

The overwhelming majority of apps are written in Java, a few in native code, but all run inside the Dalvik VM. If you write in Java, your code is more transportable. If you follow the Google guidelines for screen handling, then your app's appearance will scale regardless of resolution and will be even more transportable. If you use only Google-recommended standard interfaces for any services you need (access to cameras, for example), more transportable.

Android apps are lightweight because they use services built-in to Android and don't have to carry around their own baggage, and can be as Android-generic as you want.

Many apps, such as some games I can think of, don't care about portability beyond a certain device or class of devices, and trade off wide support for specific screen or processor enhancements.

It's up to you.

Like PCs, as the OS advances, some hardware platforms are left behind, some keep up.

EDIT - too late, oh well. :D
 
Upvote 0
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones