Android software development
Encyclopedia
Android software development is the process by which new applications are created for the Android operating system. Applications are usually developed in the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 programming language using the Android Software Development Kit
Software development kit
A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...

, but other development tools are available. As of April 2011 more than 200,000 applications have been developed for Android, with over 3 billion downloads.. The Android platform has also grown to become a favorite among mobile developers. A June 2011 research indicated that over 67% of mobile developers used the platform, at the time of publication.

Android SDK

The Android software development kit
Software development kit
A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...

 (SDK) includes a comprehensive set of development tools. These include a debugger
Debugger
A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...

, libraries, a handset emulator
Emulator
In computing, an emulator is hardware or software or both that duplicates the functions of a first computer system in a different second computer system, so that the behavior of the second system closely resembles the behavior of the first system...

 (based on QEMU
QEMU
QEMU is a processor emulator that relies on dynamic binary translation to achieve a reasonable speed while being easy to port on new host CPU architectures....

), documentation, sample code, and tutorials. Currently supported development platforms include computers running Linux
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 (any modern desktop Linux distribution), Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 10.4.9 or later, Windows XP
Windows XP
Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...

 or later. The officially supported integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

 (IDE) is Eclipse
Eclipse (software)
Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

 (currently 3.5 or 3.6) using the Android Development Tools (ADT) Plugin, though developers may use any text editor to edit Java and XML files then use command line tools (Java Development Kit
Java Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...

 and Apache Ant
Apache Ant
Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....

 are required) to create, build and debug Android applications as well as control attached Android devices (e.g., triggering a reboot, installing software package(s) remotely).

Enhancements to Android's SDK go hand in hand with the overall Android platform development. The SDK also supports older versions of the Android platform in case developers wish to target their applications at older devices. Development tools are downloadable components, so after one has downloaded the latest version and platform, older platforms and tools can also be downloaded for compatibility testing.

Android applications are packaged in .apk
APK (file format)
Android application package file is the file format used to distribute and install application software and middleware onto the Google's Android operating system. To make an APK file, a program for Android is first compiled, and then all of its parts are packaged into one file...

 format and stored under /data/app folder on the Android OS (the folder is accessible only to root user for security reasons). APK package contains .dex files (compiled byte code files called Dalvik
Dalvik virtual machine
Dalvik is the process virtual machine in Google's Android operating system. It is the software that runs the apps on Android phones. Dalvik is thus an integral part of Android, which is typically used on mobile devices such as mobile phones, tablet computers and netbooks. Programs are commonly...

 executables), resource files, etc.

Native Development Kit

Libraries written in C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 and other languages can be compiled to ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

 or x86 native code and installed using the Android Native Development Kit
Native development kit
A native development kit is a software development kit based on a native application programming interface which allows computer software to be developed directly on a computing platform, rather than via a virtual machine....

. Native classes can be called from Java code running under the Dalvik VM using the System.loadLibrary call, which is part of the standard Android Java classes.

Complete applications can be compiled
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 and installed using traditional development tools. The ADB debugger gives a root shell under the Android Emulator which allows native ARM code
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

 or x86 to be uploaded and executed. ARM or x86 code can be compiled using GCC
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...

 on a standard PC. Running native code is complicated by the fact that Android uses a non-standard C library (libc, known as Bionic
Bionic (software)
The Bionic libc is a derivation of the BSD standard C library code that was originally developed by Google for the Android embedded system operating system. Bionic has several major Linux-specific features and development continues independent of other code bases...

). The underlying graphics device is available as a framebuffer
Framebuffer
A framebuffer is a video output device that drives a video display from a memory buffer containing a complete frame of data.The information in the memory buffer typically consists of color values for every pixel on the screen...

 at /dev/graphics/fb0. The graphics library that Android uses to arbitrate and control access to this device is called the Skia Graphics Library
Skia Graphics Engine
The Skia Graphics Engine is a compact open source graphics library written in C++. It was originally developed by Skia Inc., which was subsequently acquired by Google in 2005 , who then released the software as open source licensed under the Apache License 2.0 free software license.Now known as...

 (SGL), and it has been released under an open source license. Skia has backends for both win32 and Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

, allowing the development of cross-platform applications, and it is the graphics engine underlying the Google Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...

 web browser.

App Inventor for Android

On 12 July 2010 Google announced the availability of App Inventor for Android, a Web-based visual development environment for novice programmers, based on MIT's Open Blocks Java library and providing access to Android devices' GPS, accelerometer and orientation data, phone functions, text messaging, speech-to-text conversion, contact data, persistent storage, and Web services, initially including Amazon and Twitter. "We could only have done this because Android’s architecture is so open," said the project director, MIT's Hal Abelson
Hal Abelson
Harold Abelson is a Professor of Electrical Engineering and Computer Science at MIT, a fellow of the IEEE, and is a founding director of both Creative Commons and the Free Software Foundation....

. Under development for over a year, the block-editing tool has been taught to non-majors in computer science at Harvard, MIT, Wellesley, and the University of San Francisco, where Professor David Wolber developed an introductory computer science course and tutorial book for non-computer science students based on App Inventor for Android.

HyperNext Android Creator

HyperNext Android Creator (HAC) is a software development system aimed at beginner programmers that can help them create their own Android apps without knowing Java and the Android SDK. It is based on HyperCard
HyperCard
HyperCard is an application program created by Bill Atkinson for Apple Computer, Inc. that was among the first successful hypermedia systems before the World Wide Web. It combines database capabilities with a graphical, flexible, user-modifiable interface. HyperCard also features HyperTalk, written...

 that treated software as a stack of cards with only one card being visible at any one time and so is well suited to mobile phone applications that have only one window visible at a time. HyperNext Android Creator's main programming language is simply called HyperNext
HyperNext
HyperNext is a freeware visual software development system aimed at beginner programmers that runs on Macintosh and Windows computers. It was inspired by HyperCard and includes a GUI having controls such as buttons and listboxes, and an interpreted English-like programming language. HyperNext also...

 and is loosely based on Hypercard's HyperTalk
HyperTalk
HyperTalk is a high-level, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. The main target audience of HyperTalk was beginning programmers, hence HyperTalk programmers were usually called...

 language. HyperNext is an interpreted English-like language and has many features that allow creation of Android applications. It supports a growing subset of the Android SDK including its own versions of the GUI control types and automatically runs its own background service so apps can continue to run and process information while in the background.

The Simple project

The goal of Simple is to bring an easy to learn and use language to the Android platform. Simple is a BASIC
BASIC
BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....

 dialect for developing Android applications. It targets professional and non-professional programmers alike in that it allows programmers to quickly write Android applications that utilise the Android runtime components.

Similar to Microsoft Visual Basic 6, Simple programs are form definitions (which contain components) and code (which contains the program logic). The interaction between the components and the program logic happens through events triggered by the components. The program logic consists of event handlers which contain code reacting to the events.

The Simple project is not very active. The last source code update was at August 2009. A similar commercial product named Basic4android is available. It is inspired from Microsoft Visual Basic 6 and Microsoft Visual Studio. Basic4android is very active and there is a strong online community of Basic4android developers.

Android Developer Challenge

The Android Developer Challenge was a competition for the most innovative application for Android. Google offered prizes totaling 10 million US dollars, distributed between ADC I and ADC II. ADC I accepted submissions from 2 January to 14 April 2008. The 50 most promising entries, announced on 12 May 2008, each received a $25,000 award to further development. It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each. ADC II was announced on 27 May 2009. The first round of the ADC II closed on 6 October 2009. The first-round winners of ADC II comprising the top 200 applications were announced on 5 November 2009. Voting for the second round also opened on the same day and ended on November 25. Google announced the top winners of ADC II on November 30, with SweetDreams, What the Doodle!? and WaveSecure being nominated the overall winners of the challenge.

Community-based firmware

There is a community of open-source enthusiasts that build and share Android-based firmware with a number of customizations and additional features, such as FLAC
FLAC
FLAC is a codec which allows digital audio to be losslessly compressed such that file size is reduced without any information being lost...

 lossless audio support and the ability to store downloaded applications on the microSD card. This usually involves rooting
Rooting (Android OS)
Rooting is a process that allows users of mobile phones and other devices running the Android operating system to attain privileged control within Android's Linux subsystem with the goal of overcoming limitations that carriers and manufacturers put on some devices...

 the device. Rooting allows users root access to the operating system, enabling full control of the phone. In order to use custom firmwares the device's bootloader must be unlocked. Rooting alone does not allow the flashing of custom firmware. Modified firmwares allow users of older phones to use applications available only on newer releases.

Those firmware packages are updated frequently, incorporate elements of Android functionality that haven't yet been officially released within a carrier-sanctioned firmware, and tend to have fewer limitations. CyanogenMod
CyanogenMod
CyanogenMod is an after-market replacement for the firmware of over sixty cell phones and Internet tablets. Based on the Android mobile computer operating system, it offers features and options not found in the official firmware distributed by vendors of these devices.Features supported by...

 and VillainROM are two examples of such firmware.

On 24 September 2009, Google issued a cease and desist
Cease and desist
A cease and desist is an order or request to halt an activity and not to take it up again later or else face legal action. The recipient of the cease-and-desist may be an individual or an organization....

 letter to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications within the custom firmware. Even though most of Android OS is open source, phones come packaged with closed-source Google applications for functionality such as the Android Market
Android Market
Android Market is an online software store developed by Google for Android OS devices. Its gateway is an application program called "Market", preinstalled on most Android devices, allows users to browse and download mobile apps published by third-party developers...

 and GPS navigation. Google has asserted that these applications can only be provided through approved distribution channels by licensed distributors. Cyanogen has complied with Google's wishes and is continuing to distribute this mod without the proprietary software. He has provided a method to back up licensed Google applications during the mod's install process and restore them when it is complete.

Java Standards

Obstacles to development include the fact that Android does not use established Java standards, i.e. Java SE and ME. This prevents compatibility among Java applications written for those platforms and those for the Android platform. Android only reuses the Java language syntax and semantics, but does not provide the full class libraries and APIs bundled with Java SE or ME. However, there are multiple tools in the market from companies such as Myriad Group
Myriad Group
Myriad Group is a French/Swiss software company in the mobile phone sector. It was established in 2009 by the merge of the companies Purple Labs and Esmertec. The two companies had mostly common owners, and the deal was executed so that Esmertec, a publicly listed company, acquired Purple Labs in...

 and UpOnTek that provide J2ME to Android conversion services.

Fragmentation

Developers had reported that it was difficult to maintain applications on multiple versions of Android, owing to compatibility issues between versions 1.5 and 1.6, especially the different resolution ratios in use among various Android phones.
However, this situation appears to have improved, in that by July 2011, Google reported over 95% of android phones in service were on 2.1 variants and newer, over 60% on 2.2 variants and newer . A year ago, August 2010, Google reported 83% of Android phones were running the, then current, 2.x versions, with 17% still on 1.5 and 1.6.

Such problems were pointedly brought into focus as they were encountered during the ADC2 contest. Further, the rapid growth in the number of Android-based phone models with differing hardware capabilities also makes it difficult to develop applications that work on all Android-based phones.

History

Android is created by the Open Handset Alliance
Open Handset Alliance
The Open Handset Alliance is a consortium of 84 firms to develop open standards for mobile devices. Member firms include Google, HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung Electronics, LG Electronics, T-Mobile, Nvidia, and Wind River Systems.-History:The OHA was...

 which is lead by Google. The early feedback on developing applications for the Android platform was mixed. Issues cited include bugs, lack of documentation, inadequate QA infrastructure, and no public issue-tracking system. (Google announced an issue tracker on 18 January 2008.) In December 2007, MergeLab mobile startup founder Adam MacBeth stated, "Functionality is not there, is poorly documented or just doesn't work... It's clearly not ready for prime time." Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the Snake game
Snake (video game)
Snake is a video game that originated during the late 1970s in arcades and has maintained popularity since then, becoming something of a classic...

.
The Android Dev Phone
Android Dev Phone
The Android Dev Phone is a SIM-unlocked and hardware-unlocked Android device that is designed for advanced developers. While developers can use regular consumer devices purchased at retail to test and use their apps, some developers may choose not to use a retail device, preferring an unlocked or...

 is a SIM
Subscriber Identity Module
A subscriber identity module or subscriber identification module is an integrated circuit that securely stores the International Mobile Subscriber Identity and the related key used to identify and authenticate subscriber on mobile telephony devices .A SIM is held on a removable SIM card, which...

-unlocked and hardware-unlocked device that is designed for advanced developers. While developers can use regular consumer devices purchased at retail to test and use their applications, some developers may choose not to use a retail device, preferring an unlocked or no-contract device.

A preview release of the Android SDK was released on 12 November 2007. On 15 July 2008, the Android Developer Challenge Team accidentally sent an email to all entrants in the Android Developer Challenge announcing that a new release of the SDK was available in a "private" download area. The email was intended for winners of the first round of the Android Developer Challenge. The revelation that Google was supplying new SDK releases to some developers and not others (and keeping this arrangement private) led to widely reported frustration within the Android developer community at the time.

On 18 August 2008 the Android 0.9 SDK beta was released. This release provided an updated and extended API, improved development tools and an updated design for the home screen. Detailed instructions for upgrading are available to those already working with an earlier release. On 23 September 2008 the Android 1.0 SDK (Release 1) was released. According to the release notes, it included "mainly bug fixes, although some smaller features were added." It also included several API changes from the 0.9 version. Multiple versions have been released since.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK