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