1. Download our Official Android App: Forums for Android!

Wrapping My Head Around Android

Discussion in 'Android Lounge' started by rootb33r, Jan 10, 2012.

  1. rootb33r

    rootb33r Lurker
    Thread Starter
    Rank:
    None
    Points:
    6
    Posts:
    5
    Joined:
    Jan 10, 2012

    Jan 10, 2012
    5
    1
    6
    Finance
    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.
     

    Advertisement

  2. lunatic59

    lunatic59 Moderati ergo sum
    Moderator
    Rank:
     #2
    Points:
    4,238
    Posts:
    37,141
    Joined:
    Jun 12, 2010

    Jun 12, 2010
    37,141
    35,740
    4,238
    Male
    IT
    Pennsylvania
    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
     
    rootb33r likes this.
  3. rootb33r

    rootb33r Lurker
    Thread Starter
    Rank:
    None
    Points:
    6
    Posts:
    5
    Joined:
    Jan 10, 2012

    Jan 10, 2012
    5
    1
    6
    Finance
    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.

    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.
     
  4. chanchan05

    chanchan05 The Doctor
    Rank:
     #25
    Points:
    1,108
    Posts:
    15,150
    Joined:
    Jun 30, 2011

    Jun 30, 2011
    15,150
    4,824
    1,108
    Male
    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.

    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.
     
    rootb33r likes this.
  5. lunatic59

    lunatic59 Moderati ergo sum
    Moderator
    Rank:
     #2
    Points:
    4,238
    Posts:
    37,141
    Joined:
    Jun 12, 2010

    Jun 12, 2010
    37,141
    35,740
    4,238
    Male
    IT
    Pennsylvania
    "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.

    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.


    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.
     
    EarlyMon and rootb33r like this.
  6. rootb33r

    rootb33r Lurker
    Thread Starter
    Rank:
    None
    Points:
    6
    Posts:
    5
    Joined:
    Jan 10, 2012

    Jan 10, 2012
    5
    1
    6
    Finance
    Excellent. Thank you very much for your responses. This is exactly the kind of stuff I was looking for.
     
    lunatic59 likes this.
  7. EarlyMon

    EarlyMon The PearlyMon
    VIP Member
    Rank:
    None
    Points:
    5,218
    Posts:
    57,631
    Joined:
    Jun 10, 2010

    Jun 10, 2010
    57,631
    70,445
    5,218
    New Mexico, USA
    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
     
    rootb33r and lunatic59 like this.
  8. lunatic59

    lunatic59 Moderati ergo sum
    Moderator
    Rank:
     #2
    Points:
    4,238
    Posts:
    37,141
    Joined:
    Jun 12, 2010

    Jun 12, 2010
    37,141
    35,740
    4,238
    Male
    IT
    Pennsylvania
    And you found it all in one place. :D Tell your friends. ;)

    BTW, Welcome to Android Forums! (never too late to say hello.)
     
    EarlyMon likes this.
  9. daveybaby

    daveybaby Android Expert
    Rank:
    None
    Points:
    93
    Posts:
    919
    Joined:
    Sep 21, 2009

    Sep 21, 2009
    919
    105
    93
    Software engineer
    UK
    rootb33r and EarlyMon like this.

Share This Page

Loading...