Android software development

Last updated

The Android stack Android open source project.png
The Android stack
The Nexus 4, part of the Google Nexus series, a line of "developer-friendly" devices Nexus 4.png
The Nexus 4, part of the Google Nexus series, a line of "developer-friendly" devices

Android software development is the process by which applications are created for devices running the Android operating system. Google states that [3] "Android apps can be written using Kotlin, Java, and C++ languages" using the Android software development kit (SDK), while using other languages is also possible. All non-Java virtual machine (JVM) languages, such as Go, JavaScript, C, C++ or assembly, need the help of JVM language code, that may be supplied by tools, likely with restricted API support. Some programming languages and tools allow cross-platform app support (i.e. for both Android and iOS). Third party tools, development environments, and language support have also continued to evolve and expand since the initial SDK was released in 2008. The official Android app distribution mechanism to end users is Google Play; it also allows staged gradual app release, as well as distribution of pre-release app versions to testers.

Contents

Official development tools

The Android software development kit (SDK) includes a comprehensive set of development tools. The Android SDK Platform Tools are a separately downloadable subset of the full SDK, consisting of command-line tools such as adb and fastboot. [4] The Android Debug Bridge (ADB) is a tool to run commands on a connected Android device. Fastboot is a protocol used for flashing filesystems. Code written in C/C++ can be compiled to ARM, or x86 native code (or their 64-bit variants) using the Android Native Development Kit (NDK).

Android Open Accessory Development Kit

The Android 3.1 platform (also backported to Android 2.3.4) introduces Android Open Accessory support, which allows external USB hardware (an Android USB accessory) to interact with an Android-powered device in a special "accessory" mode. When an Android-powered device is in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates devices) and the Android-powered device acts as the USB device. Android USB accessories are specifically designed to attach to Android-powered devices and adhere to a simple protocol (Android accessory protocol) that allows them to detect Android-powered devices that support accessory mode. [5]

External hardware development

Development tools intended to help an Android device interact with external electronics include IOIO, Android Open Accessory Development Kit, Microbridge, Triggertrap, etc.

Android Emulators

Android Developer Challenge

The Android Developer Challenge was a competition to find 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 January 2 to April 14, 2008. The 50 most promising entries, announced on May 12, 2008, each received a $25,000 award to further development. [6] [7] It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each. [8]

ADC II was announced on May 27, 2009. [9] The first round of the ADC II closed on October 6, 2009. [10] The first-round winners of ADC II comprising the top 200 applications were announced on November 5, 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. [11] [12]

Community-based distributions

There is a community of open source enthusiasts that build and share Android-based distributions (i.e. firmware) with a number of customizations and additional features, such as FLAC lossless audio support and the ability to store downloaded applications on the microSD card. [13] This usually involves rooting the device. Rooting allows users root access to the operating system, enabling full control of the phone. Rooting has several disadvantages as well, including increased risk of hacking, high chances of bricking, losing warranty, increased virus attack risks, etc. [14] It is also possible to install custom firmware, although the device's boot loader must also be unlocked. Custom firmware allows users of older phones to use applications available only on newer releases. [15]

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 and OMFGB are examples of such firmware.

On September 24, 2009, Google issued a cease and desist letter [16] to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications [17] 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 Google Play and GPS navigation. Google has asserted that these applications can only be provided through approved distribution channels by licensed distributors. Cyanogen complied with Google's license and continued to distribute its mod without the proprietary software. It provided a method to backup licensed Google applications during the mod's install process and restore them when the process is complete. [18]

Java standards

Obstacles to development include the fact that Android does not use established Java standards, that is, Java SE and ME. This prevents compatibility between Java applications written for those platforms and those written for the Android platform. Android reuses the Java language syntax and semantics, but it does not provide the full class libraries and APIs bundled with Java SE or ME. [19] However, there are multiple tools in the market from companies such as Myriad Group and UpOnTek that provide Java ME to Android conversion services. [20] [21] [22]

Android provides its own GUI classes, and does not provide Java AWT, Swing or JavaFX. It does not support the full Java Beans API.[ citation needed ]

History and market share

Android was created by the Open Handset Alliance, which is led by Google. The early feedback on developing applications for the Android platform was mixed. [23] Issues cited include bugs, lack of documentation, inadequate QA infrastructure, and no public issue-tracking system. (Google announced an issue tracker on January 18, 2008.) [24] 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." [25] Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the Snake game. [26]

A preview release of the Android SDK was released on November 12, 2007. On July 15, 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. [27]

On August 18, 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. [28] On September 23, 2008, the Android 1.0 SDK (Release 1) was released. [29] 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 it was developed. [30]

On December 5, 2008, Google announced the first Android Dev Phone, a SIM-unlocked and hardware-unlocked device that is designed for advanced developers. It was a modified version of HTC's Dream phone. While developers can use regular consumer devices to test and use their applications, some developers may choose a dedicated unlocked or no-contract device.

As of July 2013, more than one million applications have been developed for Android, [31] with over 25 billion downloads. [32] [33] A June 2011 research indicated that over 67% of mobile developers used the platform, at the time of publication. [34] Android smartphone shipments are forecast to exceed 1.2 billion units in 2018 with an 85% market share. [35]

See also

Related Research Articles

A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination. To create applications with advanced functionalities such as advertisements, push notifications, etc; most application software developers use specific software development kits.

Mobile app development is the act or process by which a mobile app is developed for one or more mobile devices, which can include personal digital assistants (PDA), enterprise digital assistants (EDA), or mobile phones. Such software applications are specifically designed to run on mobile devices, taking numerous hardware constraints into consideration. Common constraints include CPU architecture and speeds, available memory (RAM), limited data storage capacities, and considerable variation in displays and input methods. These applications can be pre-installed on phones during manufacturing or delivered as web applications, using server-side or client-side processing to provide an "application-like" experience within a web browser.

<span class="mw-page-title-main">Adobe AIR</span> Cross-platform runtime system for building rich web applications

Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.

iOS SDK Software development kit for iOS

The iOS SDK, formerly the iPhone SDK, is a software development kit (SDK) developed by Apple Inc. The kit allows for the development of mobile apps on Apple's iOS and iPadOS operating systems.

<span class="mw-page-title-main">Android Developer Challenge</span> Programming contest by Google

The Android Developer Challenge (ADC) was launched by Google in 2008, with the aim of providing awards for high-quality mobile applications built on the Android platform. In November 2009, the winners of Android Developers Challenge II were selected after two rounds of scoring by thousands of Android users as well as an official panel of judges. The overall winners of ADC II were SweetDreams, What the Doodle!? and WaveSecure.

<span class="mw-page-title-main">Android SDK</span> Software development kit

The Android SDK is a software development kit for the Android software ecosystem that includes a comprehensive set of development tools. These include a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. The SDK is part of the official Android Studio IDE but its various tools and resources can be used independently.

<span class="mw-page-title-main">HTC Magic</span> Android-based smartphone

HTC Magic is an Android smartphone designed and manufactured by HTC. It is HTC's second Android phone after HTC Dream, HTC's first touch-only flagship Android device and the second Android phone commercially released, as well as the first Android phone without a keyboard.

Apache Cordova is a mobile application development framework created by Nitobi. Adobe Systems purchased Nitobi in 2011, rebranded it as PhoneGap, and later released an open-source version of the software called Apache Cordova. Apache Cordova enables software programmers to build hybrid web applications for mobile devices using CSS3, HTML5, and JavaScript, instead of relying on platform-specific APIs like those in Android, iOS, or Windows Phone. It enables the wrapping up of CSS, HTML, and JavaScript code depending on the platform of the device. It extends the features of HTML and JavaScript to work with the device. The resulting applications are hybrid, meaning that they are neither truly native mobile application nor purely Web-based. They are not native because all layout rendering is done via Web views instead of the platform's native UI framework. They are not Web apps because they are packaged as apps for distribution and have access to native device APIs. Mixing native and hybrid code snippets has been possible since version 1.9.

Titanium SDK is an open-source framework that allows the creation of native mobile applications on platforms iOS and Android from a single JavaScript codebase. It is presently developed by non-profit software foundation TiDev, Inc.

<span class="mw-page-title-main">CyanogenMod</span> Discontinued open-source mobile operating system

CyanogenMod is a discontinued open-source operating system for mobile devices, based on the Android mobile platform. Developed between 2009 and 2016, it was free and open-source software based on the official releases of Android by Google, with added original and third-party code, and based on a rolling release development model. Although only a subset of total CyanogenMod users elected to report their use of the firmware, on 23 March 2015, some reports indicated that over 50 million people ran CyanogenMod on their phones. It was also frequently used as a starting point by developers of other ROMs.

<span class="mw-page-title-main">Symbian</span> Discontinued mobile operating system

Symbian was a mobile operating system (OS) and computing platform designed for smartphones. It was originally developed as a proprietary software OS for personal digital assistants in 1998 by the Symbian Ltd. consortium. Symbian OS is a descendant of Psion's EPOC, and was released exclusively on ARM processors, although an unreleased x86 port existed. Symbian was used by many major mobile phone brands, like Samsung, Motorola, Sony Ericsson, and above all by Nokia. It was also prevalent in Japan by brands including Fujitsu, Sharp and Mitsubishi. As a pioneer that established the smartphone industry, it was the most popular smartphone OS on a worldwide average until the end of 2010, at a time when smartphones were in limited use, when it was overtaken by iOS and Android. It was notably less popular in North America.

<span class="mw-page-title-main">Nook Color</span> Tablet computer/e-reader from Barnes & Noble

The Nook Color is a tablet computer/e-reader that was marketed by Barnes & Noble. A 7-inch (18 cm) tablet with multitouch touchscreen input, it is the first device in the Nook line to feature a full-color screen. The device is designed for viewing of books, newspapers, magazines, and children's picture books. A limited number of the children's books available for the Nook Color include interactive animations and the option to have a professional voice actor read the story. It was announced on 26 October 2010 and shipped on 16 November 2010. Nook Color became available at the introductory price of US$249. In December 2011, with the release of the Nook Tablet, it lowered to US$169. On 12 August 2012, the price lowered to US$149. On 4 November 2012, the price was further lowered to US$139. The tablet ran on Android.

The version history of the Android mobile operating system began with the public release of its first beta on November 5, 2007. The first commercial version, Android 1.0, was released on September 23, 2008. The operating system has been developed by Google on a yearly schedule since at least 2011. New major releases are announced at Google I/O in May along with beta testing with the stable version usually released to the public between August and October.

<span class="mw-page-title-main">Android Debug Bridge</span> Tool for debugging Android-based devices

The Android Debug Bridge is a programming tool used for the debugging of Android-based devices. The daemon on the Android device connects with the server on the host PC over USB or TCP, which connects to the client that is used by the end-user over TCP. Made available as open-source software under the Apache License by Google since 2007, its features include a shell and the possibility to make backups. The adb software is available for Windows, Linux and macOS. It has been misused by botnets and other malware, for which mitigations were developed such as RSA authentication and device whitelisting.

<span class="mw-page-title-main">Replicant (operating system)</span> Free software version of Android

Replicant is a free and open-source Android-based operating system that intends to replace all proprietary Android components with free-software counterparts. It is available for several smartphones and tablets. Replicant's modifications are mostly in the C programming language, and its changes are mostly to the lower-level parts of the OS, such as the Linux kernel and drivers that use it.

Android Developer Lab is a series of mobile software development-focused events around the world held annually by Google. They include bootcamps and technical sessions focused on Android and give participants an excellent chance to learn about the state of the Android platform, get hands-on with the latest version of the SDK, test applications on the latest sample Android devices, get questions answered by Google engineers from the Android team as well as meet other like-minded members of the local Android developer community.

<span class="mw-page-title-main">Android Studio</span> Integrated development environment for the Android platform

Android Studio is the official integrated development environment (IDE) for Google's Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically for Android development. It is available for download on Windows, macOS and Linux based operating systems. It is a replacement for the Eclipse Android Development Tools (E-ADT) as the primary IDE for native Android application development. Android Studio is licensed under the Apache license but it ships with some SDK updates that are under a non-free license, making it not open source.

Google Play Services is a proprietary software package produced by Google for installation on Android devices. It consists of background services and libraries for use by mobile apps running on the device. When it was introduced in 2012, it provided access to the Google+ APIs and OAuth 2.0. It expanded to cover a variety of Google services, allowing applications to communicate with the services through common means.

<span class="mw-page-title-main">LineageOS</span> Free and open-source Android-based operating system

LineageOS is a open source Android distribution for smartphones, tablets, and set-top boxes. It is community-developed and serves as the successor to CyanogenMod, from which it was forked in December 2016, with the source code available on both GitHub and GitLab. As of 2023, there are about 1.5 million devices running the LineageOS operating system.

References

  1. "The Android Source Code". Source.Android.com. Retrieved February 2, 2017.
  2. Syed H (September 24, 2023). "Editorial: Why You Should Go Nexus". Droid Lessons. Archived from the original on February 18, 2017. Retrieved August 22, 2023.
  3. "Application Fundamentals". Android Developers.
  4. Modesti, Paolo (March 2021). "A Script-Based Approach for Teaching and Assessing Android Application Development". ACM Transactions on Computing Education. 21 (1): 1–24. doi:10.1145/3427593 . Retrieved May 8, 2022.
  5. "Android Developers guides". Developer.android.com. Retrieved April 17, 2021.
  6. Chen, Jason (May 12, 2008). "The Top 50 Applications". Android Developers Blog. Archived from the original on September 25, 2009. Retrieved September 4, 2009.
  7. Brown, Eric (May 13, 2008). "Android Developer Challenge announces first-round winners". Linux for Devices. Archived from the original on May 14, 2008.
  8. "ADC I Top 50 Gallery". Android Developer Challenge. Retrieved May 19, 2009.
  9. "Android Developer Challenge". Google Code. Retrieved January 11, 2008.
  10. Chu, Eric (October 6, 2009). "ADC 2 Round 1 Scoring Complete". Android Developers Blog. Archived from the original on November 1, 2009. Retrieved November 3, 2009.
  11. "ADC 2 Overall Winners". Android Developer Challenge. Archived from the original on January 4, 2011. Retrieved December 5, 2010.
  12. Kharif, Olga (November 30, 2009). "Android Developer Challenge 2 Winners Announced". BusinessWeek. Archived from the original on December 4, 2009. Retrieved December 5, 2010.
  13. "Dream android development". xda-developers forum. Retrieved September 11, 2009.
  14. "Rooting: Advantages and Disadvantages". ITCSE forum. Archived from the original on November 29, 2014. Retrieved September 21, 2013.
  15. "Android 2.1 from Motorola Droid Ported to G1". Volt Mobile . March 10, 2010. Archived from the original on May 31, 2011. Retrieved May 13, 2011.
  16. Wimberly, Taylor (September 24, 2009). "CyanogenMod in trouble?". Android and me. Archived from the original on October 3, 2009. Retrieved September 26, 2009.
  17. Morrill, Dan (September 25, 2009). "A Note on Google Apps for Android". Android Developers Blog. Archived from the original on October 25, 2009. Retrieved September 26, 2009.
  18. "The current state..." CyanogenMod Android ROM. September 27, 2009. Archived from the original on November 3, 2009. Retrieved September 27, 2009.
  19. van Gurp, Jilles (November 13, 2007). "Google Android: Initial Impressions and Criticism". Javalobby. Archived from the original on August 28, 2008. Retrieved March 7, 2009. Frankly, I don't understand why Google intends to ignore the vast amount of existing implementation out there. It seems like a bad case of "not invented here" to me. Ultimately, this will slow adoption. There are already too many Java platforms for the mobile world and this is yet another one
  20. "Myriad's New J2Android Converter Fuels Android Applications Gold Rush". March 19, 2010. Archived from the original on July 4, 2011. Retrieved May 13, 2011.
  21. Fruhlinger, Josh (March 23, 2010). "J2Android hopes you don't know that Android is Java-based". JavaWorld . Retrieved 2020-07-13. On the other hand, you might think this is kind of a scam aimed at developers who don't really understand the nature of the platform they're targeting. My biggest complaint is that you'd think that Mikael Ricknäs, the IDG News Service reporter who wrote the first story linked to above (who toils for the same company that publishes JavaWorld), would have at least mentioned the relationship between Java and Android to make the oddness of this announcement clear.
  22. Fruhlinger, Josh (March 31, 2010). "Myriad CTO: J2Android moves MIDlets to "beautiful" Android framework". JavaWorld . Retrieved 2020-07-13. We will have to wait and see exactly how much pickup J2Android actually sees. The tool isn't actually available on the open market just yet; while Schillings spoke optimistically about "converting 1,000 MIDlets in an afternoon," at the moment they're working with a few providers to transform their back catalogs. So those of you out there hoping to avoid learning how to write Android code may have to wait a while.
  23. Paul, Ryan (December 19, 2007). "Developing apps for Google Android: it's a mixed bag". Ars Technica . Archived from the original on December 20, 2007. Retrieved December 19, 2007.
  24. Morrill, Dan (January 18, 2008). "You can't rush perfection, but now you can file bugs against it". Android Developers Blog. Retrieved September 3, 2009.
  25. Morrison, Scott (December 19, 2007). "Glitches Bug Google's Android Software". The Wall Street Journal. Retrieved December 19, 2007.
  26. "First Android Application — Snake". Mobiles2day. November 14, 2007. Archived from the original on May 11, 2008. Retrieved January 7, 2008.
  27. Metz, Cade (July 14, 2008). "Google plays Hide and Seek with Android SDK". The Register . Archived from the original on October 6, 2008. Retrieved October 23, 2008.
  28. "Android — An Open Handset Alliance Project: Upgrading the SDK". Archived from the original on September 13, 2008. Retrieved October 24, 2008.
  29. "Other SDK Releases". Android Developers. Retrieved September 2, 2009.
  30. "SDK Archives". Android Developers.
  31. "Google Play Hits 1 Million Apps". Mashable. July 24, 2013.
  32. "Android App Stats". Archived from the original on January 2, 2011. Retrieved December 31, 2010.
  33. Leena Rao (April 14, 2011). "Google: 3 Billion Android Apps Installed; Downloads Up 50 Percent From Last Quarter". Techcrunch. Archived from the original on April 25, 2011. Retrieved May 13, 2011.
  34. "Developer Economics 2011". Archived from the original on September 29, 2013. Retrieved July 8, 2011.
  35. "Worldwide Smartphone Volumes Will Remain Down in 2018 Before Returning to Growth in 2019 and Beyond, According to IDC". idc.com. May 30, 2018. Archived from the original on October 17, 2019. Retrieved June 6, 2018.

Bibliography