Introduction to Android
This tutorial provides an introduction to Android. It is essentially an open-source operating system (OS) for mobile devices developed by Google Inc., built upon the Linux kernel. Android’s competitors include Apple’s iOS (for iPhone/iPad), RIM’s BlackBerry OS, Symbian OS, Microsoft’s Windows Phone OS, and numerous other proprietary mobile operating systems.
The latest version of Android supports mobile phones, tablets, TVs, wearable devices (e.g., watches and glasses), automobile devices and the Internet of Things (IoT).
Android Platform
Android is based on Linux with a set of native core C/C++ libraries. Android applications are written in Java. However, these applications operate on Android’s proprietary Java Virtual Machine, known as the Dalvik Virtual Machine (DVM), rather than the Java Development Kit’s JVM. The DVM is specifically optimized for small and mobile devices. Figure 1 below shows a typical Android application architecture.

Figure 1: Android application architecture
Basically, Android apps can be written using Kotlin, Java, and C++. The Android SDK tools compile your code along with any data and resource files into an APK, an Android package, which is an archive file with a .apk suffix. One APK file contains all the contents of an Android app and is the file that Android-powered devices use to install the app.
Each Android app lives in its own security sandbox, protected by the following Android security features:
- The Android operating system is a multi-user Linux system in which each app is a different user.
- By default, the system assigns each app a unique Linux user ID (the ID is used only by the system and is unknown to the app). The system sets permissions for all the files in an app so that only the user ID assigned to that app can access them.
- Each process has its own virtual machine (VM), so an app’s code runs in isolation from other apps.
- By default, every app runs in its own Linux process. The Android system starts the process when any of the app’s components need to be executed, and then shuts down the process when it’s no longer needed or when the system must recover memory for other apps.
The Android system implements the principle of least privilege. That is, each app, by default, has access only to the components that it requires to do its work and no more. This creates a very secure environment in which an app cannot access parts of the system for which it is not given permission. However, there are ways for an app to share data with other apps and for an app to access system services:
- It’s possible to arrange for two apps to share the same Linux user ID, in which case they are able to access each other’s files. To conserve system resources, apps with the same user ID can also arrange to run in the same Linux process and share the same VM. The apps must also be signed with the same certificate.
- An app can request permission to access device data such as the device’s location, camera, and Bluetooth connection. The user has to explicitly grant these permissions.
The rest of this document introduces the following concepts:
- The core framework components that define your app.
- The manifest file, in which you declare the components and the required device features for your app.
- Resources that are separate from the app code and that allow your app to gracefully optimize its behaviour for a variety of device configurations.
The official website for the Android app development can be found at https://www.android.com. However, the programmers and developers should visit https://developer.android.com to download the Android Studio SDK, access Android Training, and find API Guides and documentation.