Architectute is nothing but physical structural plan or block diagram of some view.
Android is Linux based software stack , it is open source for lot of devices. For developers they are giving full acces to Frame work API acces to develop core level applications, because of that only manufactrers are customizing their own features.
The following diagram is shows rhe components of android.
Android architecture has total 6 layers.
The top most layer is system APPS. Normally normal devices will come with Contacts, Messages, Browsers, calenders etc.. so here user can install any number of applications which they are using, some third party applications may be we can set as default apps like browers, Messengars and keyboards
These all very helpful to for because if developer is developing his own applications he can those functionalities for example if we developemnet any application related to SMS just developer invoke the services then next portion of the service like sending sms & sms status will be done android system only
The Android OS complete feature set is avaible for devlopers in the form of APIs those APIs are written by Java language. This are very helpful to developers to simplify their app development, even developer can use cor part of architecture alos to build apps like components and services which are included in API framework. The following are few of the APIs
- View System:
View System is for building of user interface in android like textview, button, grid, list, image,vidoes etc. here using XML/Java we can build UI is very very rich, simple & attractive.
- Content Providers:
Content providers is nothing but we can access the data from other applications like while sending the message we are accessing contacts data & in now days all social media applicatiosn we are accessing the contacts, gallery etc.
These are also API but non coding portion providing layouts, images, strings, colors, default styles etc.
Resource manager provides acces to resources for our developemnet such as Strings, Images, nimations, graphics, colors, vidoes etc.
Notification Manger will help enable the custom notification in status bar.
Activity Manager as very very important API in android it is only controlling the navigation of each screen in our apps using lifecycle methods.
This Api could help to acces the geo location,navigation using Services of Android Architecture.
Each package contains multiple java classes and it can control all the functionalities of those classes.
It can communicate with networks like mobile data, wifi, hotspot & sharing data etc.
It can handle the multiple windows in our device. For example symultantously while listing the songs chatting with some one so its handling two two different windows at a time like same some windows cache memory & browser windows etc.
- Native C/C++ Libraries
Many of the android componnts and servicew are build from native code those android runtime & Hardware abstraction layers because native libraries wriiten in C & C++.
It can support all type of browsers.
- Open Max AL
It should create run time environment.
Lot of componets are developed by C & C++ so it always requied support of Libc.
- Meida framework
Android apps can support all type of media like jpg, png, mp3, mp4 etc.
- Open GLES
It can support 2D & 3D graphics
- Android Run Time
- Android Runtime (ART)
From android 5.0 and above version of android with its own process and its own instance of Android Runtime. ART is designed for low memory device by excuting the DEX (byte code) files to run on virtual devices,and bytecode is designed special optimized for low memory devices.
- Optimized garbage collection (GC)
- Just In Time complier (JIT)
- Ahead of Time (AOT)
- Better debugging support
- Supporting Crash reports
Previosly Lower version (less than 5.0) is run in Dalvik virtual machine, now as well as it can run in ART also, then it can run DVM as well, but vicevera is not possible.
- Core Librariries
Android application also includes a set of core libraries that provide most of the runtime functionality of the Java programming language, and it includes android 8.0 features as well
- Android Abstraction Layer(HAL)
The android hardware abstraction layer provides User interfaces that expose hardware capabilities of device with higher version of Java. It can lot of hard ware components, suac as Audio, Bluetooth, Camera, sensors. When access device hardware through a framework API Android system loads the library module for that hardware component.
- Linux Kernel
Linux kernel is hardware layer. For example, the ART relies on the Linux kernel for functionalities such as threading and low-level memory management. Linux kernel allows Android to take advantage of key features like develop hardware drivers for a well-known kernel such as Audio, Keypad, Shraed memory, Usb, Bluetooth, Binder(IPC)Display, Camera, Wifi, Power Management etc.