What is Android?

What is Android?

Android is a software stack for mobile devices. Android is an open source, Linux-based software stack created for a wide array of devices and form factors.  The Android SDK provides the tools and APIs necessary to develop applications on the Android platform using the Java programming language.

Brief History of Android

Andy Rubin founded Android Incorporation in Palo Alto, California in October ,2003.
Google acquired Android on 17th August 2005. Since then it is a subsidiary of Google Incorporation.
Google formed Open Handset alliance(OHA) on 5th November 2007.

What is Open Handset Alliance?
The Open Handset Alliance is a group of 84 technology and mobile companies who have come together to accelerate innovation in mobile and offer consumers a richer, less expensive, and better mobile experience. The group include mobile operators, handset manufacturers, semiconductors\ companies, software companies and commercialization companies
Member firms include HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Google, Samsung Electronics, LG Electronics, T-Mobile, Sprint Corporation, Nvidia, and Wind River Systems.
 
The first commercially available smartphone running Android was the HTC Dream it came to the market as the T-Mobile G1 in the USA. It was approved by the Federal Communications Commission (FCC) on 18 August 2008, and became available on 22 October.

Android Version Names


Android names its versions alphabetically and these versions are named after sweets.
They include:
Aestro, Blender, Cupcake, Doughnut, Eclair, Froyo, Gingerbread, Honeycomb, Icecream, Sandwhich, Jellybean, Kitkat, Lollipop, Marshmellow, Nougat, Orion.
As at the time of writing this post, the most recent being Android 8.0 with Nougat API level 25.

Operating System:

As computers (desktops, laptops, palmtops etc.) has Operating Systems so likewise Android too. Android’s Operating System is Linux Kernel.
To know the version of Linus Kernel your Android mobile phone or tablet is operating on, Go to Settings > About phone or tablet.

Functions of Linux Kernel/Operating System:
Memory Management: Allocate a memory to a new file, Free the memory when a specific file is deleted etc.
Power Management: Providing power to various devices like bluetooth, camera etc.
Resource Management: It provides resources to each process, thus providing the ability to do multiple operations at the same time. i.e. Surfing Internet, Listening Songs etc
Driver Management: It handles installation of various drivers.
Networking.
Security settings.


Android’s native/core libraries.
Libc: c standard lib.
SSL: Secure Socket Layer
SGL: 2D image engine
OpenGL|ES: 3D image engine
Media Framework:  media codecs
SQLite: Database engine
WebKit: Kernel of web browser
FreeType: Bitmap and Vector
SufraceManager: Compose window manager with off-screen buffering

Applications:
Applications are written by Java and Kotlin programming languages.

Application Framework:
The android framework is the set of API's that allow developers to quickly and easily write apps for android phones. Application framework provides essential and core services to developers in form of Java classes. Application developers are allowed to make use of these services in their applications. Application frameworks include Activity Manager, Package Manager, Window Manager, View System, Package Manager, Telephony Manager, Content Providers, Resource Manager, Location Manager, Notification Manager.

Android Runtime:
It comprises of Dalvik Virtual Machine and Core Libraries.
Applications:
Applications layer is the top most layer of Android Architecture. All applications using android framework uses android runtime and libraries. While android runtime and native libraries are using Linux Kernel


Programming languages used in Android development.
Java: Java is used for Application development. Application framework are also provided in form of java classes.
Kotlin: Kotlin is used for Application development. Last year, Google officially announced Kotlin as the official language for Android development but you can still use Java.
C/C++: The libraries in Android are written in C/C++.
C:  Android OS & Drivers are written in C:  Android OS & Drivers are written in C programming language.


 Application Components

Each component is an entry point through which the system or a user can enter an app. Some components depend on others.

Activities 
An activity in Android represents a single screen with which a user can interact with. An Application can have more than one activity. The Activities are independent but they can linked to one another through intents. For an Activity to visible t.o the user, it must be declared in AndroidManifest.xml file.

Services 
It is responsible for keeping the App working in the background. It performs long running process in the background. A user can't interact with a service unlike an activity. For instance, a service keeps a music playing while the user is chatting

Broadcast Receivers 
They handle communication between Android OS and applications.
They don't display a user interface. The App sending the broadcast does not need to be launched. since they don't display a user interface, they may just show a notification on the status bar.

Content Providers 
Content Providers are responsible for managing application data stored in the web or SQLite database etc.