// August 19th, 2009 // No Comments » // Google Android Phones
This is a question asked by many, whom almost never receive the desired answer. When this is next asked of you, which if you own a Google Android G1, it most likely will, here is some understanding of the system. It is hoped this will help Google Android users answer with something other than, “It is kind of like Linux”.
To begin with Android is a set of software subsystems which together give a fully functional system (software stack) to run on mobile devices. This stack consists of an operating system, middleware and key applications.
The architecture of Android consists of the following components: The Linux Kernel, Libraries, Android Runtime, Application Framework, and the Applications themselves.
The Linux Kernel: Android utilizes the Linux Kernel v.2.6 for system services. These include, but are not limited to security, memory management, process management, network stack, and driver model (such as your wifi, camera, audio, and display drivers). The Linux Kernel serves as an abstraction layer between the hardware and the software stack (that is, the Kernel works as an intermediary between the physical hardware and the software).
Android Runtime: The Java programming language has many core libraries (pieces of internal code which make Java possible), Android includes a set of core libraries that provides almost all of the functionality available in Java.
We must mention the Dalvik Virtual Machine (VM). Dalvik is a major piece of Android platform for mobile devices. The virtual machine runs Java platform applications which have been converted into a compact Dalvik Executable (.dex) format suitable for systems that are constrained in terms of memory and processor speed.
Each Google Android application runs its own process, with its own instance of the Dalvik Virtual Machine (VM). This nice thing about Dalvik is that it has been written to allow multiple VMs to run concurrently (that is many apps running at the same time).
The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.
Libraries: Thought the applications are written in Java, various components of Google Android use C/C++ libraries (pieces of code which make Google Android able to run). Some of these core libraries are: System C library, Media Libraries, Surface Manager, LibWebCore, SGL., 3D libraries, FreeType, and SQLite.
Application Framework: Applications need underlying code to be able to run, and thus underlying all applications is a set of services and systems. These include (i) a rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser, (ii) Content Providers that enable applications to access data from other applications, or to share their own data, (iii) A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files (iv) A Notification Manager that enables all applications to display custom alerts in the status bar (v) An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack.
Google Android Applications
Google Android Applications: Android comes with a set of core Java applications such as an email client, SMS program, calendar, maps, browser, contacts, and others. All Google Android applications are written in the Java Programming language, using the application framework already lain down by Google.
To end this, here is nice picture of the system architecture given by Google.
