Android Development

The Android platform is the largest producer of mobile apps with the highest number of apps consistently produced in a single year. The Google Play Store offers more than 1 million apps and has been downloaded more than 50 billion times. There are over 2 billion active Android devices worldwide.

Android is a linux-based, open source operating system for mobile devices created by Andy Rubin and developed by Google. Announced on November 5, 2007, Android started out as a project to develop smarter mobile devices that are more aware of their owner's needs and location. Android applications are written in Java programming language and run on Dalvik virtual machine.

Dalvik is a register-based virtual machine designed for running multiple virtual machines each with its own process isolated from other applications on the same device. Every Android application runs in its own process and each process is managed by the Dalvik VM instance associated with that app, meaning that an app's code executes independently from other apps' code. By using multiple VMs, Android can run multiple processes simultaneously without sacrificing performance or introducing security risks.

The Android software development kit (SDK) includes a comprehensive set of developer tools. These include a debugger, libraries, an emulator based on QEMU, documentation, sample code, and tutorials. Initially, Google provided all these tools free of charge but announced in May 2016 that it would start charging $25 for access to the SDK through what it calls an "Android App Bundle".

The Eclipse IDE integrated development environment is commonly used for developing Android applications but other IDEs can be used as well such as IntelliJ IDEA CE or And more Studio among others. Other development tools include Google Cloud Tools for Eclipse which provides functionality to integrate the Eclipse IDE with Google Cloud Platform's services; Android Debug Bridge (adb) which allows developers to communicate with either physical or emulated android devices; fast boot which repartitions partitions on flash memory storage devices; Spanner which is used for debugging purposes also known as dumpstate/logcat; Systrace collects system internals information while an app/game is running on either real hardware or inside an emulator allowing developers to identify issues causing performance bottlenecks.