Android is the world’s most popular operating system for mobile devices and tablets. It is an open source operating system, created by Google, and available to all kinds of developers with various expertise levels, ranging from rookie to professional.
From a developer’s perspective, Android is a Linux-based operating system for smartphones and tablets. It includes a touch screen user interface, widgets, camera, network data monitoring and all the other features that enable a cell phone to be called a smartphone. Android is a platform that supports various applications, available through the Android Play Store. The Android platform also allows end users to develop, install and use their own applications on top of the Android framework. The Android framework is licensed under the Apache License, with Android application developers holding the right to distribute their applications under their customized license.
Introduction about Android
- Android is a software stack for mobile devices that includes an operating system, middleware and key applications.
- The Android OS is a Linux based operating system.
- The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
- The Android Platform embraces the idea of general-purpose computing for handheld devices.
- Android’s libraries cover telephony, video, graphics, UI programming, and a number of other aspects of the device.
- Android is an operating system developed by Google that is dedicated to mobile devices.
- Android core libraries are written in C ,C++ and Java.
- Android platform is written in Java.
- Android uses a virtual machine – Dalvik.
- Android offers a set of APIs in the Java language for application developers.
Android released to date:
- 1.0 Astro
- 1.1 Bender
- 1.5 Cupcake
- 1.6 Donut
- 2.0/2.1 Eclair
- 2.2.x Froyo
- 2.3.x Gingerbread
- 3.x Honeycomb
- 4.0.x Ice Cream Sandwich
- 4.1.x Jelly Bean
To begin development on Android even at the application level, I think it is paramount to understand the basic internal architecture. Knowing how things are arranged inside helps us understand the application framework better, so we can can design the application in a better way.
Android is an OS based on Linux. Hence, deep inside, Android is pretty similar to Linux. To begin our dive into the Android internals, let us look at an architectural diagram.
Android is not Linux, it uses Linux kernel which very small portion of the platform. The kernel consists of several device drivers such as display, Bluetooth, camera, audio, WiFi…etc. On top of the kernel, there exist the Android specific libraries which were written in C++. These libraries consists of Surface Manager, Media Framework, SQLite, Web-kit, SSL…etc. The Android run time contained some core Android libraries which runs by the Dalvik virtual machine. Dalvik is a register based virtual machine, optimized for mobile devices dealing with issues such as: process isolation, memory management and threading support. contrary to Java Virtual machine which is stack based virtual machine. The class file is compiled into the bytecode, the bytecode is different from the traditional Java bytecode, instead, transforms the Java Class files of Java classes compiled by a regular Java compiler into Dalvik Executable called the Dex file(in .dex format).
Scratching further below the applications, we reach the application framework, which application developers can leverage in developing Android applications. The framework offers a huge set of APIs used by developers for various standard purposes, so that they don’t have to code every basic task.The framework consists of certain entities; major ones are:
This manages the activities that govern the application life cycle and has several states. An application may have multiple activities, which have their own life cycles. However, there is one main activity that starts when the application is launched. Generally, each activity in an application is given a window that has its own layout and user interface. An activity is stopped when another starts, and gets back to the window that initiated it through an activity callback.
This manager enables the applications to create customized alerts
Views are used to create layouts, including components such as grids, lists, buttons, etc.
Applications do require external resources, such as graphics, external strings, etc. All these resources are managed by the resource manager, which makes them available in a standardized way.
Applications also share data. From time to time, one application may need some data from another application. For example, an international calling application will need to access the user’s address book. This access to another application’s data is enabled by the content providers.
The Android runtime consists of the Dalvik Virtual Machine. It is basically a virtual machine for embedded devices, which like any other virtual machine is a bytecode interpreter. When we say it is for embedded devices, it means it is low on memory, comparatively slower and runs on battery power. Besides the Dalvik Virtual Machine, it also consists of the core libraries, which are Java libraries and are available for all devices.
The Android OS is derived from Linux Kernel 2.6 and is actually created from Linux source, compiled for mobile devices. The memory management, process management etc. are mostly similar. The kernel acts as a Hardware Abstraction Layer between hardware and the Android software stack.
As already mentioned, Android is open source and hence the source code is available for all developers. In totality it is called the Android SDK. You can download, build and work on Android in a number of different ways–it all depends on what you want to do. If your goal is to develop an Android application, you don’t necessarily need to download all the source. Google recommends the Eclipse IDE, for which there is an available Android Developer Tools (ADT) plugin, through which you can install the specific SDK, create projects, launch emulators, debug, etc. You can see more details of Eclipse and ADT through Android’s official website for developers –
Downloading the Android SDK and developer tools
Google provides a convenient bundle to download and setup Android for Windows developers, which you can download here, under the name ADT bundle for Windows.