Department of Information Technology, Buddha Institute of Technology Gorakhpur
Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Android is a software platform and operating system for mobile devices based on the Linux operating system and developed by Google and the Open Handset Alliance. It allows developers to write managed code in a Java-like language that utilizes Google-developed Java libraries, but does not support programs developed in native code.
The unveiling of the Android platform on 5 November 2007 was announced with the founding of the Open Handset Alliance, a consortium of 34 hardware, software and telecom companies devoted to advancing open standards for mobile devices. When released in 2008, most of the Android platform will be made available under the Apache free-software and open-source license.
- History of Android
In July 2005, Google acquired Android Inc., a small startup company based in Palo Alto, CA. Android's co-founders who went to work at Google included Andy Rubin (co-founder of Danger), Rich Miner (co-founder of Wildfire Communications, Inc), Nick Sears (once VP at T-Mobile), and Chris White (one of the first engineers at WebTV). At the time, little was known about the functions of Android Inc. other than they made software for mobile phones.
At Google, the team, led by Rubin, developed a Linux-based mobile device OS which they marketed to handset makers and carriers on the premise of providing a flexible, upgradeable system. It was reported that Google had already lined up a series of hardware component and software partners and signaled to carriers that it was open to various degrees of cooperation on their part.
- Google acquires startup Android Inc. to start Android platform
- Work on Dalvik VM begins
- Open Handset Alliance announced
- Early look at SDK
- Google sponsors 1st Android Developer Challenge
- T-Mobile G1 announced
- SDK 1.0 released
Android released open source (Apache License)
- SDK 1.5 (Cupcake)
New soft keyboard with “autocomplete” feature
- SDK 1.6 (Donut)
Support Wide VGA
- SDK 2.0/2.0.1/2.1 (Eclair)
Revamped UI, browser
- Nexus One released to the public
- SDK 2.2 (Froyo)
Flash support, tethering
- SDK 2.3 (Gingerbread)
UI update, system-wide copy-paste
- SDK 3.x (Honeycomb)
Optimized for tablet support
- SDK 4.0 (Ice Cream Sandwich)
Virtual UI buttons
- SDK 4.1.1 (Jelly Bean)
Triple buffered graphics pipeline.
- Feature of Android
- Application Framework –
It is used to write applications for Android. Unlike other embedded mobile environments, Android applications are all equal, for instance, an applications which come with the phone are no different than those that any developer writes. The framework is supported by numerous open source libraries such as openness, SQLite and libc. It is also supported by the Android core libraries. From the point of security, the framework is based on UNIX file system permissions that assure applications have only those abilities that mobile phone owner gave them at install time. 
- Dalvik Virtual Machine –
It is extremely low-memory based virtual machine, which was designed especially for Android to run on embedded systems and work well in low power situations. It is also tuned to the CPU attributes. The Dalvik VM creates a special file format (.DEX) that is created through build time post processing. Conversion between Java classes and .DEX format is done by included “dx” tool. 
- Integrated Browser –
- Optimized Graphics –
As Android has 2D graphics library and 3D graphics based on OpenGL ES 1.0, possibly we will see great applications like Google Earth and spectacular games like Second Life, which come on Linux version. At this moment, the shooting legendary 3Dgame Doom was presented using Android on the mobile phone.
- SQLite –
Extremely small (500kb) relational database management system, which is integrated in Android. It is based on function calls and single file, where all definitions, tables and data are stored. This simple design is more than suitable for a platform such as Android.
- Data Storage –
SQLite is used for structured data storage .SQLite is a powerful and lightweight relational database engine available to all applications.
- Connectivity –
Android supports a wide variety of connectivity technologies including GSM, CDMA, Bluetooth, EDGE, EVDO, 3G and Wi-Fi.
- Java Virtual Machine –
Software written in Java can be compiled into Dalvik bytecodes and executed in the Dalvikvirtual machine, which is a specialized VM implementation designed for mobile device use, although not technically a standard Java Virtual Machine. 
- Tools of Android
- Android SDK Tools, revision 20 or newer.
- SDK Platform Android 3.0 (API 11).
- The minimal platform supported by Java API is Android 2.2 (API 8).But for successful compilation the target platform should be set to Android 3.0 (API 11) or higher. It will not prevent them from running on Android 2.2.
- Eclipse IDE
There is a list of Eclipse versions that are compatible with the Android SDK. In this paper we are using Eclipse 3.7 (Indigo).
- ADT plug-in for Eclipse
Android Development Tools (ADT) is a plug-in for the Eclipse IDE that is designed to give us a powerful, integrated environment in which to build Android applications.
ADT extends the capabilities of Eclipse to let us quickly set up new Android projects, create an application UI, add packages based on the Android Framework API, debug applications using the Android SDK tools, and even export signed (or unsigned) .apk files in order to distribute the application.
Developing in Eclipse with ADT is highly recommended and is the fastest way to get started. With the guided project setup it provides, as well as tools integration, custom XML editors, and debug output pane, ADT gives us an incredible boost in developing Android applications.
Following steps are used to download and install the ADT plug-in:
- Start Eclipse, and then select Help ‣ Install New Software.
- Click Add (in the top-right corner).
- In the Add Repository dialog that appears, enter “ADT Plug-in” for the Name and the URL refer to Figure
- Click OK (System must be connected to internet).
- In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
- In the next window, we’ll see a list of the tools to be downloaded. Click Next.
- Read and accept the license agreements, then click Finish.
- When the installation completes, restart Eclipse.
- AVD Manager –
The AVD Manager provides a graphical user interface in which we can create and manage Android Virtual Devices (AVDs), which are required by the Android Emulator.
- For emulation, we need to define a device.
- Select Window -> Android AVD Manager from the menu
- Importing Project
- Open the import Dialog
- Select File > Import ... to open the import dialog.
- Import the "MyProject" project
- In the import dialog, expand the General node and select Existing Projects into Workspace, then click Next to move to the Import Projects step. Make sure that Select root directory is selected, then click the Browse... button.
- In the Browse for Folder dialog, locate the "MyProject" folder, select it and click OK. Then, click Finish to import the project. The project now shows up in the Package Explorer.
- Launch the "MyProject" project
- Right click the "MyProject" in the Package Explorer window, and then select Run As > Android Application from the menu.
- Deleting Project –
Here is the project-wise solution. Right click the "MyProject" in the Package Explorer window, and then select Delete from the menu. In the dialog that appears, ensure that delete project contents on disk is not selected if we want to use the project's folders in workspace. If not, we can check it before be click OK.
- Creating Application
Go to file>new>android application project.
Open project go to res>layout>activity_main.xml
Here we can start layout details
- Right click on project>Run As>1 Android Application
Set the Target -
- Execution Process
Open - Android allows you to access core mobile device functionality through standard API calls.
All applications are equal - Android does not differentiate between the phone's basic and third-party applications -- even the dialer or home screen can be replaced.
Breaking down boundaries - Combine information from the web with data on the phone -- such as contacts or geographic location -- to create new user experiences.
Fast and easy development - The SDK contains what you need to build and run Android applications, including a true device emulator and advanced debugging tools. 
Security - Making source code available to everyone inevitably invites the attention of black hat hackers. 
Open Source - A disadvantage of open-source development is that anyonecanscrutinizethesourcecodetofindvulnerabilitiesandwriteexploits.
Login - Platform doesn't run on an encrypted file system and has a vulnerable log-in.
Incompetence - Google’s dependence on hardware and carrier partner puts the final product out of their control. 
- Conclusion and Future scope
Android has been criticized for not being all open-source software despite what was announced by Google. Parts of the SDK are proprietary and closed source, and some believe this is so that Google can control the platform. Software installed by end-users must be written in Java, and will not have access to lower level device APIs. This provides end-users with less control over their phone's functionality than other free and open source phone platforms, such as Open Moko. With all upcoming applications and mobile services Google Android is stepping into the next level of Mobile Internet. Android participates in many of the successful open source projects. That is, architect the solution for participation and the developers will not only come but will play well together. This is notable contrast with Apple and other companies, where such architecture of participation is clearly belated .The first Android based official devices may well be launched sometime in the early half of 2009. Obviously, that's an age away when it comes to handset design, and Android may well find itself competing against the forthcoming Nokia touch screen phones and may be even the iPhone. 
- Android Official Webpage
- Official Android Google Code Webpage
- Android Wiki
- Official Google Blog