So let's have a look at Android software stack, because it's composed of several different layers.
So each layer defines interfaces and offers specific services.
So let's briefly examine Android's architecture from the bottom up.
As you can see in the figure, Android is built on top of the Linux kernel.
As in any unique system, the colonel provides drivers for hardware networking file system access as
well as process management.
Now, on top of the colonel, the hardware abstraction layer defines a standard interface for interacting
with built in hardware components.
So this is the basis for allowing applications to interact with the devices hardware, for example,
it allows a stock phone application to use device's microphone and speaker.
Android runtime, also known as Art.
So this is an application runtime environment replacing Dalvik, which was the process virtual machine
that was originally used by Android, so outperforms the translation the applications bytecode into
native instructions are later executed by the devices runtime environment.
I'll explain this process in much more detail in the next lecture.
How many core Android system components and services such as art and hell are built from native code
that requires native libraries written in C and C++?
The Android platform provides Java framework APIs to expose the functionality of some of these native
libraries to apps.
Android's core Java libraries are originally derived from the Apache Harmony Project and just happened
to be the next layer on our stack.
Now, on top of native libraries and Android runtime, there is an Android framework.
So Android framework includes Android APIs such as user interface telephony, resources, locations,
content providers and package managers.
It provides a lot of classes and interfaces for Android application development.
Now, on top of the Android framework, there are applications.
All applications, such as browser camera, calendar, home contact and settings are using the Android
framework that uses Android runtime and libraries.
Android runtime and native libraries are using Linux kernel.