As I done so many Android development project, I thought its better to take a break and talk about Android Development with my experience. So this will be a series of posts about Android Development from OS development to Application development. As the beginning post, I think the best place to start this post series is the Android Stack Architecture. Then later on lets talk about Hardware & OS side development, SDK development, SDK Addon development, Application development & ect.

Android Stack Architecture.

Android OS stack can brake down to following layers.

  1. Application Layer.
  2. Application Framework Layer.
  3. Native Layer.
  4. Linux Kernel Layer.

Lets talk about those layers one by one.

1. The Application Layer

The Application Layer is the top level stack of the Android OS. As in any other OS such as Windows, Linux ect. Application layer contain the applications (Softwares) which Android device need to work. Mainly we can see there are 2 types of applications. They are User Applications & System Applications.

User Applications

User applications are the application which user can install/ uninstall manually. Those apps can be install via Google play store or manually install via APK files. You may already using Games, messenger apps, Facebook apps, ect. those are the User applications.

System Applications
System Applications are the apps, which we can call needed application to keep your device on working stage. Lets say your device is a mobile phone. Then the calling application, Bluetooth application, wifi application, ect. those are the System applications. And note that you can’t install or uninstall those applications, unless you have the root permission to do so. (Let’s see how to make/ use system application on a later day).

2. Application Framework Layer

Application Framework layer is the next layer in Android OS. On top of it, is the Application layer that we discussed earlier. This Framework layer include all the services, which control your OS & Hardware stuff. So the System Apps & User apps can call those Framework layer & execute your requests. 
To understand this, lets talk about an example. Lets say your User application need to get GPS coordinates. Then the Application cannot directly call to your hardware and get the GPS coordinate. So what is does is, first the Application will call to the Framework Service of GPS. After that the Application Framework layer services will do the rest.(Lets talk about them when we go to the next layer 😉 ). So this is how the Application layer works. It manage the hardware resources and expose them to different applications. So you can use several apps at ones which use same hardware at once.

3. Native Layer

Native layer is the is the backbone of Application Framework Layer. For hardware components, there will be a Native library to execute it’s functionalities. The Application Layer call this Native libraries to execute Application’s commands. This Native libs will directly communicate with the Hardware.

4. Linux Kernel

The Linux kernel is same as other Linux OS kernels. It handle the driver level. So the Native libraries will actually communicate with the Linux kernel.

***Please note that all of the content on this post was originally published on We have migrated these posts to for your convenience and continued access.

One Response

Leave a Reply

Your email address will not be published. Required fields are marked *