Android Application Architecture
1) On the Bottom Level, Linux kernel Provides the necessary Configurations and drivers and overall Management required for running android OS. Like Display driver keeps track of Resolution, Per Pixel Intensity
(PPI). Camera Driver keeps track of Camera Settings like Picture Resolution, Effects etc. Flash Memory Driver takes into account of Flash Memory like ROM(for installation of OS), RAM(for Smooth Multitasking) and SD card(for storage and installation of Applications). IPC(Inter-process Communication) Diver is necessary for communication between the processes for example: you want to play an audio, then Music player process has to communicate with the Audio driver process. Keypad Driver takes care of Virtual Keypad that is used to type the data that you want to send in a Message or E-Mail. Next is WI-Fi(Wireless Fidelity) Driver that keeps track of Wireless Devices in a Particular Range. Audio Divers are responsible for Volume related configurations like volume control, equalizer(Bass,Rock,Pop) etc. Power Management takes into account of Voltages,Temperatures the most efficient settings that makes your Android OS to run effectively.
2) Above this, is a combination of Libraries and Run-time.
Libraries are required for the drivers to work e.g. for Graphics Drivers to Work, we need OpenGL/ES Library
Run-time is used to run a particular android Application under a specific Hardware Environment.
Surface manager manages access to display system and generally takes care of 2D and 3D Graphics Layers.
Media Framework takes care of Image,audio and video media that are supported in a Particular device like MP3, MP4, MPEG3, AAC, AMR, JPEG, GIF etc.
SQLite is a Lightweight yet powerful database Engine.
OpenGL/ES is a Open-Source Graphics Library.
FreeType is a Bitmap and Vector Font Rendering System.
Webkit is a Toolkit that provides tools for browsing the Web.
SSL Secure Socket Layer is a Security system that is used to send Encrypted Information. This is what Android inherited from Linux because it is totally based on Linux Kernel.
libc Its a GNOME C Library Specially made for Embedded Linux devices.
Now the Android Run-time does not use JVM , it has its own Virtual Machine i.e. Dalvik Virtual Machine. for Compiling a Android Project we need ANT which makes a .dex(dalvik executable) file for the Dalvik VM to Run it properly.
3) Application Framework defines how Android Application looks like. it consists of all the Managers that we generally see in a Android Device by-default
Activity Manager Activity is an Android Application Component that provides a Screen with Which user can interact. Activity manager keeps track of all the Activities pertaining to a Specific Process.
Window manager Window is a Graphical Container made up of Pixels. Window Manager take into account of all the Windows,their positioning etc.
Content Providers Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process.
View System manages many of the UI elements, including handling user events.
Package Manager manages all the .apk packages and also takes care of whether the package is Signed because it won't allow the installation of Non-Signed Packages.
Telephone Manager handles making and receiving phone calls.
Location Manager Keeps track of Location of User based on the GPS(Global Positioning System).
Notification Manager It is a System Service that execute and manage all the Notification you see on your status bar like A New Message Received Alert, Running Applications etc.
4) on the Top , Android Applications that actually runs on an Android Platform. Every Android Device must have some Predefined Applications installed Like Customizable Home Screens, Contacts Management, Phone, Browser etc. After that our Next step will be how to create an android Project.