Paulo Dichone

Chances are, you’ve heard of Android many times. You may even have an Android smartphone, tablet, watch, or TV. But what is Android? Android is a mobile operating system (OS) that was designed and developed by Google. The Android OS is Linux kernel-based. So, what’s “Linux kernel,” and why is that such an essential detail about Android?

In a nutshell, Linux kernel is an OS, well, sort of — it’s partially an OS. More like a small part of an OS, but an important one. The Linux kernel is the layer responsible for interfacing with the device’s hardware and managing the device’s CPU and memory. The Android OS is Linux kernel-based because the Linux kernel allows for a more open and customizable OS, which is what Android promotes — any device manufacturer can take the Android OS and make it their own. 

person holding Android phone, Google logo

Additionally, anyone can contribute to the actual source code that comprises Android and make it even better for all! That makes Android an open-source OS, unlike Apple iOS and Apple iPhone, for example. Android is truly open. Android is part of the Open Handset Alliance — a community of mobile and technology leaders who share the same vision of changing the mobile experience for consumers. The openness of Android makes it the number one mobile OS in the world. Hence, Android OS runs on Samsung smartphones (Samsung galaxy) and tablets, Amazon’s Kindle, Fire, and many others.

The Comprehensive Android App Development Masterclass

Last Updated November 2021

  • 388 lectures
  • All Levels
3.8 (3,836)

Master Android App Development: ROOM Database, ML Kit Face Recognition, Firestore, Firebase, Maps and Android Studio IDE | By Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor

Explore Course

Android as a software stack

Now that you understand the foundation of Android, let’s look at the whole picture of Android. Android is a software stack, which means it’s not just one thing. Android has a few layers, and each layer works as part of the overall Android system.

The Android software stack

Above, we have a graphical representation of the Android software stack. Let’s quickly dissect each layer (we’ll start from the bottom):

Linux kernel

The Linux Kernel

Linux Kernel is the base of what Android is, as discussed above. Primarily, the Linux kernel handles all the low-level memory and CPU management, which is part of the Android OS. At this stack level, Android manufacturers can create hardware drivers for audio, camera, WiFi, Bluetooth, and so on. Most developers won’t be working at this level. The Linux Kernel makes sure that every application that runs on Android is running in a secure environment. That’s one reason Android engineers used the Linux kernel, instead of any other base core for the Android OS.  

Why is security in Android important?

Imagine how bad it would be if, say, resources from application A read information from another application’s files and vice versa with no constraints — malicious, insecure interactions would take hold and bring the whole system to a halt.  

The sharing of information (data) between applications is an essential part of building inter-connected applications, so the Android OS requires developers to set permissions that users must grant to do certain things. For example, for an application to access the phone’s File System (internal files), the user must give access first. This means the app developer must let the user know, in advance, what the app they are installing wants to access. For example, when a user installs an Android app that needs to access the photo gallery or the phone’s camera, the app will ask for permission to access the gallery or the camera. The app user has the power to either grant or deny permission. App permissions in Android ensure the user’s protection from malware and software viruses.  

Hardware abstraction layer

Hardware Abstraction Layer (HAL)

This level sits on top of the Linux Kernel. HAL is where the devices’ physical capabilities (hardware) communicate with the Java application programming interface (API) framework (more on this later) so developers can access the device’s audio/speakers, Bluetooth, camera, sensors, etc.

Android runtime

Android Runtime (ART)

There are two layers at this level of the software stack, but let’s focus first on the Android Runtime (ART) layer. The ART governs the Android OS. It works along with several Android libraries that facilitate the work of ART. Think of it this way: for each app that the Android OS is running internally, there’s a unique “sandbox” — the ART — that’s responsible for managing the life of that app solely. 

native C/C++ libraries

Native C/C++ Libraries

This stack hosts many core Android system components and services, such as ART. These components are all built using Native code (C and C++ programming languages). For example, for your device to open a browser and display web content, the Webkit library is being used internally. If you want to listen to music or record a video on your phone — the media framework handles that.

Java API framework

The Application Framework

The application framework is the layer you’ll use the most as an Android developer (or aspiring Android developer). At this level, the developer has access to the underlying Android system by making calls through the Google Android team’s API classes. 

In other words, the Android team built a way for you to write code that will interface with all lower layers of the Android software stack, making the work of a developer much simpler. Imagine that you want to build an Android app that will track users’ locations. All you must do is use the location API.  

system apps, android core apps

System Apps 

Every Android device will always come with pre-installed apps such as the dialer, email app, calendar, camera, browser, and others. These are the core apps. The beauty of Android is that everything works together.  

For example, if you are building an app to send a message, all you have to do is invoke the messaging app already installed on the device! No need to make a unique messaging app yourself. Additionally, the Android system will allow users to choose which messaging app to use to send that message. This will be automatic. Just specify (in your app) you want to send a message, and the Android OS takes care of it for you.

Android versions

The Android OS comes in many flavors. That’s a direct result of it being open. Even though manufacturers may customize the Android OS and install it on a variety of devices, the core of Android remains the same. 

Google, the creator, and the primary maintainer of Android holds the purest Android version, the original software as Google intended. Hence, the majority of the community (Android developers) prefer this version (often called “Stock Android”) over anything else. 

Internally, Google improves Android continuously. Since the first Android release, Android has gone through many significant changes. Google has a naming system to keep track of all Android version releases. They use:

  1. Code name
  2. Version numbers
  3. API level

The first two Android versions didn’t have code names, but they had a version number and an API level. Here’s an example of how the naming would look:

The first Android version release:

The second Android version:

And fast forward a few iterations:

Each Android version builds on the previous version. So, Android Pie, for example, would have new features and look better than the last Android version. As Android matures and evolves, so do the development tools — better code editors that provide a better development flow and testing such as the Android Studio integrated development environment (IDE).  

In the first Android versions (1.0 to 1.1), the OS was still a work in progress. The user interface and the hardware of the devices were basic back then. However, Android phones included the early versions of popular Google apps such as Gmail, maps, calendar, and YouTube. On the development side of things, when Android 1.0 was released in September 2008, the first Android software development kit (SDK) was also released. An SDK is a collection of tools and libraries that enable developers to develop software (apps) for a particular platform such as the Android platform. In the early Android versions, the primary focus was to improve Android as a reliable mobile OS and stable development platform. This would attract developers to build Android apps. Android has come a long way since version 1.0.  

The evolution of Android is astonishing, considering in less than 10 years it went from a small startup project to the most-used mobile OS in the world. Growth and improvement continue at a rapid pace. More developers have been building Android apps. 

Many companies and startups have leveraged Android development to create incredible applications and games that millions of people use worldwide. And this is just the beginning — most of the world’s population is still not online, which means Android is in its infancy as more people connect via mobile devices.

Differences between Android & iPhones

iPhones run the iOS OS, which is proprietary software — meaning it’s not open-source, and only Apple can modify the OS. Also, the underlying philosophies are different between iPhone and Android. Android is open, for everyone, whereas the iPhone and the iOS OS is a more closed in, niche platform. It’s not to say one is better than the other; they are just different in how the software works and looks.

iPhones have a unique structural design and offer a different user experience than Android devices. The differences run not only at the cosmetic level; they run deeper. For instance, to develop apps for the iPhone, you are required to use Apple’s programming languages and tools. The primary programming language used to create apps for the iPhone was Objective-C, a proprietary programming language created and maintained by Apple. Most recently, they developed another programming language called Swift to replace Objective-C. Swift is now open-source, but the core iOS architecture remains proprietary.  

Android used a popular open-source programming language, Java, to go with its open-source core system. Although the Google team has also adopted Kotlin as an alternative programming language for Android development, Java continues to be the primary programming language.

Some users prefer Android’s overall look and feel, which varies depending on the manufacturer. Others prefer the iPhone’s user interface and user experience. iPhones have a uniform and unique look throughout, which makes it a bit more predictable than Android, but Android is more customizable and open.

Android apps and the Google Play marketplace

Android devices run Android apps, built specifically for the Android platform. Google Play is an app store (not to be confused with Apple’s app store), where Android developers can publish their apps and Android users can download Android apps. Although initially Google Play only served Android apps, it has transitioned (over the years) to a hub for all digital content that Android users can consume. This includes digital music, ebooks, movies, and more.

Android apps on the Google Play Store are vetted for quality and security. Android being an open platform, bad actors can easily misuse it by creating applications carrying malware and spam. That’s why the Google Play Store team is always hard at work cleaning up bad apps and ensuring that only qualified apps are allowed in the marketplace.

Many other Android app marketplaces, such as the Amazon Appstore, are installed on Amazon’s Android-based devices, like the Amazon Fire Phone and the Amazon Kindle Fire. The Samsung Galaxy store comes pre-installed on all Samsung android devices and a few others.  Additionally, other third-parties Android app stores provide even more apps. Using alternative Android app stores speaks to the openness of the Android ecosystem; however, users cannot be guaranteed that the apps they are installing are not malicious.

The pitfalls of being open for everybody

Android’s openness makes Android a vibrant mobile OS that runs on many devices and gadgets (some of them you wouldn’t know run on Android). However, with all that freedom comes a high price — fragmentation.

Fragmentation in Android means there isn’t a consistent look and feel in Android since any manufacturer and phone carrier can change the entire user interface to fit their needs. Android receives a lot of criticism for that very reason, especially from developers who have to build and support apps for so many Android versions. 

Because it can be frustrating for developers to write code for different device’s screen sizes, the Android team at Google (and the developer community) has been working hard making tools to help solve the Android fragmentation issue, at least on the development side. For example, the Android Jetpack library helps developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices. Likewise, the material design library provides a set of design rules meant to give Android a unified User Experience. 

These and many other libraries and tools have given developers and manufacturers some relief, but there’s still a lot of work to be done to end Android fragmentation. Unfortunately, it may be the case that Android, because it is open and free, will always be fragmented. It’s just the nature of an open platform. Android fragmentation issues aside, Android is still one of the most robust, reliable, and well-known mobile OSs in the world. It’s available to anyone. That’s the beauty of Android.  

In conclusion: Android is awesome. Developing Android apps is even better.

Android is an excellent platform for developing apps. The Google Android team and the Android developer community have created a plethora of tools that make it easier to get started building Android apps. 

In the beginning stages of Android, developing Android apps required a lot of development environment set up, and there wasn’t an official IDE. Android developers, or aspiring Android developers, had to use Eclipse, which wasn’t the best Android development IDE as it was clunky and lacked the proper Android tooling. 

Fast forward a few years, and now there’s an official development tool called Android Studio, which comes with all you’ll need to get started developing right away. Android Studio has everything you’ll need to design, code, test, and publish top-notch Android apps to the Google Play Store. 

Developing for the Android platform is rewarding because you know that your apps will reach a bigger audience, and who knows, may even change the lives of millions for the better. That’s what Android is at its core — a mobile OS, a device, and a mobile development platform for everyone.

Page Last Updated: December 2021

Top courses in Android Development

Android Lifecycles Masterclass
Vasiliy Zukanov
4.9 (77)
Highest Rated
The Complete Android 14 & Kotlin Development Masterclass
Denis Panjuta, by Denis Panjuta
4.6 (14,365)
Android App Development with Kotlin | Beginner to Advanced
Oak Academy, OAK Academy Team, Mehmet ÖNGEL
4.6 (1,281)
Android App Development Masterclass using Kotlin
Tim Buchalka, Jean-Paul Roberts, Tim Buchalka's Learn Programming Academy, David Reidy
4.7 (5,991)
Android App Development Master Course with Java | Android
Oak Academy, OAK Academy Team, Mehmet ÖNGEL
4.4 (533)
Android Multithreading Masterclass
Vasiliy Zukanov
4.8 (972)
The Complete Android N Developer Course
Rob Percival, Marc Stock, Codestars • over 2 million students worldwide!
4.3 (28,610)
Full Android Development Masterclass | 14 Real Apps-46 Hours
Oak Academy, OAK Academy Team, Mehmet ÖNGEL
4.3 (858)

More Android Development Courses

Android Development students also learn

Empower your team. Lead the industry.

Get a subscription to a library of online courses and digital learning tools for your organization with Udemy Business.

Request a demo

Courses by Paulo Dichone

[NEW] Amazon EC2 Masterclass (Auto Scaling & Load Balancer)
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.7 (5,251)
Java Masterclass - Beginner to Expert Guide: Java & JavaFX
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.2 (1,397)
Java Design Patterns: The Complete Masterclass - 21 Patterns
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.6 (789)
Flutter & Dart: Complete App Development Course [NEW 2024]
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.7 (5,365)
Flutter e Dart - Curso Completo de Criação de Apps
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.2 (1,104)
GraphQL & Apollo with Android - From Novice to Expert
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.7 (96)
d3.js - Complete Developer Data Visualization Guide
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.6 (328)
The Comprehensive Android App Development Masterclass
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
3.8 (3,836)
TornadoFX - Build JavaFX Applications With Kotlin
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
3.7 (93)
The Complete Intermediate Android Masterclass
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.1 (194)
Android Developer Interview Preparation Guide
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.7 (114)
Flutter 2.0: Build Modern Responsive Web & Mobile Apps
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.7 (253)

Courses by Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor