Android software development: Difference between revisions

Content deleted Content added
No edit summary
OAbot (talk | contribs)
m Open access bot: url-access=subscription updated in citation with #oabot.
 
Line 1:
{{short description|Process of writing software for Android operating system}}
'''Android software development''' is the process by which new applications are created for the [[Android (operating system)|Android operating system]]. Applications are usually developed in the [[Java (programming language)|Java]] programming language using the Android [[Software Development Kit]], 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.<ref name="200,000">{{cite web |title=Android App Stats|url=http://www.androlib.com/appstats.aspx|accessdate=31 December 2010}}</ref><ref>{{cite web |url= http://techcrunch.com/2011/04/14/google-3-billion-android-apps-installed-up-50-percent-from-last-quarter/ |title=Google: 3 Billion Android Apps Installed; Downloads Up 50 Percent From Last Quarter |author=Leena Rao|work=Techcrunch|date=14 April 2011|accessdate=13 May 2011}}</ref>. 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. <ref>{{cite web |url =http://www.visionmobile.com/blog/2011/06/developer-economics-2011-winners-and-losers-in-the-platform-race/ |title= Developer Economics 2011}}</ref>
{{Use mdy dates|date=November 2014}}
[[File:AOSP Android Stack.png|thumb|The Android stack'''<ref name=":1">{{cite web|url=https://source.android.com/source/index.html |title=The Android Source Code |website=Source.Android.com |access-date=February 2, 2017}}</ref>''']]
[[File:Nexus 4.png|thumb|The [[Nexus 4]], part of the [[Google Nexus]] series, a line of "developer-friendly" devices<ref name=friendly>{{cite news|title=Editorial: Why You Should Go Nexus|url=http://droidlessons.com/why-you-should-go-nexus-opinion-2/|access-date=August 22, 2023|newspaper=Droid Lessons|date=September 24, 2023
|author=Syed H|archive-url=https://web.archive.org/web/20170218000749/http://droidlessons.com/why-you-should-go-nexus-opinion-2/|archive-date=February 18, 2017|url-status=dead}}</ref>]]
 
'''Android software development''' is the process by which applications are created for devices running the [[Android (operating system)|Android]] mobile operating system. Google states that<ref name="Android Dev Fundamentals">{{Cite web|url=https://developer.android.com/guide/components/fundamentals|title=Application Fundamentals|website=Android Developers}}</ref> "Android apps can be written using [[Kotlin (programming language)|Kotlin]], [[Java (programming language)|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 (programming language)|Go]], [[JavaScript]]<!-- for Android's webviews-->, [[C (programming language)|C]], [[C++]] or [[Assembly language|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.
==Software development tools==
===Android SDK===
The Android [[software development kit]] (SDK) includes a comprehensive set of development tools.<ref>{{cite web |url = http://developer.android.com/guide/developing/tools/index.html |title = Tools Overview |work = Android Developers |date = 21 July 2009}}</ref> These include a [[debugger]], [[Software library|libraries]], a handset [[emulator]] (based on [[QEMU]]), documentation, sample code, and tutorials. Currently supported development platforms include computers running [[Linux kernel|Linux]] (any modern desktop [[List of GNU/Linux distributions|Linux distribution]]), [[Mac OS X]] 10.4.9 or later, [[Windows XP]] or later. The officially supported [[integrated development environment]] (IDE) is [[Eclipse (software)|Eclipse]] (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]] and [[Apache Ant]] 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).<ref>{{cite web |url = http://jonwestfall.com/2009/08/backup-restore-android-apps-using-adb/ |title = Backup & Restore Android Apps Using ADB |first = Jon |last = Westfall |date = 25 August 2009 |work = JonWestfall.com |accessdate =2009-12-07}}</ref>
 
==Official development tools==
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.<ref>{{cite web |url=http://developer.android.com/sdk/tools-notes.html |title=SDK Tools}}</ref>
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 <code>adb</code> and <code>fastboot</code>.<ref>
{{cite journal | last = Modesti | first = Paolo | date = March 2021 | title = A Script-Based Approach for Teaching and Assessing Android Application Development | url = https://doi.org/10.1145/3427593 | journal = ACM Transactions on Computing Education | volume = 21 | issue = 1 | pages = 1–24 | doi = 10.1145/3427593 | access-date = May 8, 2022| url-access = subscription }}</ref> The [[Android Debug Bridge]] (ADB) is a tool to run commands on a connected Android device. [[Fastboot]] is a [[communications protocol|protocol]] used for flashing filesystems. Code written in [[C (programming language)|C]]/[[C++]] can be [[compiler|compiled]] to [[ARM architecture|ARM]], or [[x86]] [[native code]] (or their 64-bit variants) using the [[Android NDK|Android Native Development Kit]] (NDK).
 
===Android Open Accessory Development Kit===
Android applications are packaged in [[APK (file format)|.apk]] format and stored under <code>/data/app</code> folder on the Android OS (the folder is accessible only to root user for security reasons). APK package contains .dex files<ref>{{cite web |url=http://developer.android.com/guide/appendix/glossary.html |title=Android SDK Glossary}}</ref> (compiled byte code files called [[Dalvik Virtual Machine|Dalvik]] executables), resource files, etc.
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.<ref>{{cite web|url=https://developer.android.com/guide |title= Android Developers guides
|publisher=Developer.android.com |access-date=April 17, 2021}}</ref>
 
==External hardware development==
===Native Development Kit===
Development tools intended to help an Android device interact with external electronics include [[IOIO]], [[Android Open Accessory Development Kit]], Microbridge, [[Triggertrap]], etc.
Libraries written in [[C (programming language)|C]] and other languages can be compiled to [[ARM architecture|ARM]] [[native code]] and installed using the Android [[Native Development Kit]]. Native classes can be called from Java code running under the Dalvik VM using the <code>System.loadLibrary</code> call, which is part of the standard Android Java classes.<ref>{{cite web |url=http://davanum.wordpress.com/2007/12/09/android-invoke-jni-based-methods-bridging-cc-and-java/ |title=Android&nbsp;— Invoke JNI based methods (Bridging C/C++ and Java) |last=Srinivas |first=Davanum |date=2007-12-09 |accessdate=2008-12-13}}</ref><ref>{{cite web |url=http://developer.android.com/reference/java/lang/System.html |title=java.lang.System |work=Android Developers |accessdate=2009-09-03}}</ref>
 
==Android emulators and subsystems==
Complete applications can be [[Compiler|compiled]] and installed using traditional development tools.<ref name="benno">{{cite web |url=http://benno.id.au/blog/2007/11/13/android-native-apps |title=Native C application for Android |date=13 November 2007|work=Benno's blog|first=Ben |last=Leslie |accessdate=2009-09-04}}</ref> The ADB debugger gives a root shell under the Android Emulator which allows native [[ARM architecture|ARM code]] to be uploaded and executed. ARM code can be compiled using [[GNU Compiler Collection|GCC]] on a standard PC.<ref name="benno"/> Running native code is complicated by the fact that Android uses a non-standard C library (libc, known as [[Bionic (software)|Bionic]]). The underlying graphics device is available as a [[framebuffer]] at ''/dev/graphics/fb0''.<ref>{{cite mailing list |url=http://groups.google.com/group/android-developers/msg/ace258af92fff692?dmode=source&pli=1 |title=Native C *GRAPHICAL* applications now working on Android emulator |last=Cooksey |first=Tom |mailinglist=android-developers |date=2007-11-07 |accessdate=2008-12-13}}</ref> The graphics library that Android uses to arbitrate and control access to this device is called the [[Skia Graphics Engine|Skia Graphics Library]] (SGL), and it has been released under an open source license.<ref>{{cite web|url=http://src.chromium.org/viewvc/chrome/trunk/src/skia/|title=Skia source}}</ref> Skia has backends for both [[win32]] and [[Unix]], allowing the development of cross-platform applications, and it is the graphics engine underlying the [[Google Chrome]] web browser.<ref>{{cite web |url=http://www.atoker.com/blog/2008/09/06/skia-graphics-library-in-chrome-first-impressions/ |title=Skia graphics library in Chrome: First impressions |last=Toker |first=Alp |date=2008-09-06 |accessdate=2008-12-13}}</ref>
*[[BlueStacks]]
*[[scrcpy|Genymotion]]
*[[List of mergers and acquisitions by Alphabet|LeapDroid]]
*[[MIT App Inventor]]
*[[Android Studio]]
*[[Android-x86]]
*[[Windows Subsystem for Android]]
*[[Waydroid]]
 
==Android Developer Challenge==
===App Inventor for Android===
{{Main article|GoogleAndroid AppDeveloper InventorChallenge}}
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.<ref>{{cite news |last=Claburn |first=Thomas |title=Google App Inventor Simplifies Android Programming |url=http://www.informationweek.com/news/smb/mobile/showArticle.jhtml?articleID=225702880&subSection=News |accessdate=2010-07-12 |newspaper=Information Week |date=2010-07-12}}</ref> "We could only have done this because Android’s architecture is so open," said the project director, MIT's [[Hal Abelson]].<ref>{{cite news |last=Lohr |first=Steve |title=Google’s Do-It-Yourself App Creation Software |url=http://www.nytimes.com/2010/07/12/technology/12google.html?src=busln |accessdate=2010-07-12 |newspaper=New York Times |date=2010-07-11}}</ref> Under development for over a year,<ref>{{cite news |last=Abelson |first=Hal |title=App Inventor for Android|url=http://googleresearch.blogspot.com/2009/07/app-inventor-for-android.html |accessdate=2010-07-12 |newspaper=Google Research Blog |date=2009-07-31}}</ref> 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.<ref>{{cite news |last=Kim|first=Ryan |title=Google brings app-making to the masses |url=http://articles.sfgate.com/2009-12-11/business/17220628_1_computer-science-smart-phone-android |accessdate=2010-07-12 |newspaper=San Francisco Chronicle |date=2009-12-11}}</ref><ref>{{cite web |last=Wolber |first=David |title=AppInventor.org |url=http://www.appinventor.org/ |accessdate=2010-07-12}}</ref>
 
The Android Developer Challenge was a competition to find the most innovative application for Android. Google offered prizes totaling 10 million [[US dollar]]s, 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.<ref>{{cite web |url = http://android-developers.blogspot.com/2008/05/top-50-applications.html |work = Android Developers Blog |title = The Top 50 Applications |first = Jason |last = Chen |date = May 12, 2008 |access-date = September 4, 2009| archive-url= https://web.archive.org/web/20090925051155/http://android-developers.blogspot.com/2008/05/top-50-applications.html| archive-date= September 25, 2009 | url-status= live}}</ref><ref>{{cite news |url = http://www.linuxdevices.com/news/NS3168326017.html |title = Android Developer Challenge announces first-round winners |work = Linux for Devices |first = Eric |last = Brown |date = May 13, 2008 |url-status = dead |archive-url = https://web.archive.org/web/20080514204010/http://www.linuxdevices.com/news/NS3168326017.html |archive-date = May 14, 2008 |df = mdy-all }}</ref> It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each.<ref name=ADC>{{cite web |url=https://code.google.com/android/adc/adc_gallery/ |title=ADC I Top 50 Gallery |access-date=May 19, 2009 |work=Android Developer Challenge}}</ref>
===The Simple project===
The goal of Simple is to bring an easy to learn and use language to the Android platform.<ref>{{cite web |url = http://code.google.com/p/simple/ |title = Android Simple}}</ref> Simple is a [[BASIC]] 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.
 
ADC II was announced on May 27, 2009.<ref name="Challenge">{{cite web |url=https://code.google.com/android/adc/ |title=Android Developer Challenge |access-date=January 11, 2008 |work=Google Code}}</ref> The first round of the ADC II closed on October 6, 2009.<ref>{{cite web |url = http://android-developers.blogspot.com/2009/10/adc-2-round-1-scoring-complete.html |title = ADC 2 Round 1 Scoring Complete |work = Android Developers Blog |first = Eric |last = Chu |date = October 6, 2009 |access-date =November 3, 2009| archive-url= https://web.archive.org/web/20091101174228/http://android-developers.blogspot.com/2009/10/adc-2-round-1-scoring-complete.html| archive-date= November 1, 2009 | url-status= live}}</ref> 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.<ref>{{cite web |url = https://code.google.com/android/adc/gallery_winners.html |title = ADC 2 Overall Winners |work = Android Developer Challenge |access-date =December 5, 2010| archive-url= https://web.archive.org/web/20110104052927/http://code.google.com/android/adc/gallery_winners.html| archive-date= January 4, 2011 | url-status= live}}</ref><ref>{{cite web |url = http://www.businessweek.com/the_thread/techbeat/archives/2009/11/android_develop_2.html |archive-url = https://web.archive.org/web/20091204154635/http://www.businessweek.com/the_thread/techbeat/archives/2009/11/android_develop_2.html |url-status = dead |archive-date = December 4, 2009 |title = Android Developer Challenge 2 Winners Announced |work = BusinessWeek |first = Olga |last = Kharif |date = November 30, 2009 |access-date =December 5, 2010}}</ref>
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.
 
==Community-based distributions==
The Simple project is not very active. The last source code update was at August 2009. A similar commercial product named Basic4android is available.<ref>{{cite web |url = http://www.basic4ppc.com |title = Basic4android}}</ref> 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.
{{See also|List of custom Android 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.<ref>{{cite web |url=http://forum.xda-developers.com/forumdisplay.php?f=448 |work=xda-developers forum |title=Dream android development |access-date=September 11, 2009}}</ref> This usually involves [[Rooting (Android OS)|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 [[brick (electronics)|bricking]], losing warranty, increased virus attack risks, etc.<ref>{{cite web |url=http://unbrick.itcse.com/rooting-advantages-disadvantages/ |work=ITCSE forum |title=Rooting: Advantages and Disadvantages |access-date=September 21, 2013 |archive-url=https://web.archive.org/web/20141129085147/http://unbrick.itcse.com/rooting-advantages-disadvantages/ |archive-date=November 29, 2014 |url-status=dead }}</ref> 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.<ref>{{cite web |url=http://voltmobileandtech.com/blog/ |title=Android 2.1 from Motorola Droid Ported to G1 |work=[[Volt Mobile]] |date=March 10, 2010 |access-date=May 13, 2011 |archive-url=https://web.archive.org/web/20110531222919/http://voltmobileandtech.com/blog/ |archive-date=May 31, 2011 |url-status=dead }}</ref>
==Android Developer Challenge==
{{Main|Android Developer Challenge}}
The Android Developer Challenge was a competition for the most innovative application for Android. Google offered prizes totaling 10 million [[US dollar]]s, 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.<ref>{{cite web |url = http://android-developers.blogspot.com/2008/05/top-50-applications.html |work = Android Developers Blog |title = The Top 50 Applications |first = Jason |last = Chen |date = 12 May 2008 |accessdate = 2009-09-04}}</ref><ref>{{cite news |url = http://www.linuxdevices.com/news/NS3168326017.html |title = Android Developer Challenge announces first-round winners |work = Linux for Devices |first = Eric |last = Brown |date = 13 May 2008}}</ref> It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each.<ref name=ADC>{{cite web |url=http://code.google.com/android/adc/adc_gallery/ |title=ADC I Top 50 Gallery |accessdate=2009-05-19 |work=Android Developer Challenge}}</ref> ADC II was announced on 27 May 2009.<ref name="Challenge">{{cite web |url=http://code.google.com/android/adc/ |title=Android Developer Challenge |accessdate=2008-01-11 |work=Google Code}}</ref> The first round of the ADC II closed on 6 October 2009.<ref>{{cite web |url = http://android-developers.blogspot.com/2009/10/adc-2-round-1-scoring-complete.html |title = ADC 2 Round 1 Scoring Complete |work = Android Developers Blog |first = Eric |last = Chu |date = 6 October 2009 |accessdate =2009-11-03}}</ref> 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.<ref>{{cite web |url = http://code.google.com/android/adc/gallery_winners.html |title = ADC 2 Overall Winners |work = Android Developer Challenge |publisher = Google |accessdate =2010-12-05}}</ref><ref>{{cite web |url = http://www.businessweek.com/the_thread/techbeat/archives/2009/11/android_develop_2.html |title = Android Developer Challenge 2 Winners Announced |work = BusinessWeek |first = Olga |last = Kharif |date = 30 November 2009 |accessdate =2010-12-05}}</ref>
 
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.
==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]] lossless audio support and the ability to store downloaded applications on the [[microSD]] card.<ref>{{cite web |url=http://forum.xda-developers.com/forumdisplay.php?f=448 |work=xda-developers forum |title=Dream android development |accessdate=2009-09-11}}</ref> This usually involves [[Rooting (Android OS)|rooting]] 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.<ref>{{cite web |url=http://voltmobileandtech.com/blog/ |title= Android 2.1 from Motorola Droid Ported to G1 |work=[[Volt Mobile]] |date= March 10, 2010}}</ref>
 
On September 24, 2009, Google issued a [[cease and desist]] letter<ref>{{cite web |url = http://androidandme.com/2009/09/hacks/cyanogenmod-in-trouble/ |title = CyanogenMod in trouble? |work = Android and me |first = Taylor |last = Wimberly |date = September 24, 2009 |access-date = September 26, 2009| archive-url= https://web.archive.org/web/20091003165002/http://androidandme.com/2009/09/hacks/cyanogenmod-in-trouble/| archive-date= October 3, 2009 | url-status= live}}</ref> to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications<ref>{{cite web |url= http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html |title= A Note on Google Apps for Android |work = Android Developers Blog |first= Dan |last= Morrill |date= September 25, 2009 |access-date= September 26, 2009| archive-url= https://web.archive.org/web/20091025130628/http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html| archive-date= October 25, 2009 | url-status= live}}</ref> 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.<ref>{{cite web |url = http://www.cyanogenmod.com/home/the-current-state |title = The current state... |work = CyanogenMod Android ROM |date = September 27, 2009 |access-date = September 27, 2009 |archive-url = https://web.archive.org/web/20091103155814/http://www.cyanogenmod.com/home/the-current-state |archive-date = November 3, 2009 |df = mdy-all }}</ref>
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 [[VillainROM]] are two examples of such firmware.
 
==Java standards==
On 24 September 2009, Google issued a [[cease and desist]] letter<ref>{{cite web |url = http://androidandme.com/2009/09/hacks/cyanogenmod-in-trouble/ |title = CyanogenMod in trouble? |work = Android and me |first = Taylor |last = Wimberly |date = 24 September 2009 |accessdate = 2009-09-26}}</ref> to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications<ref>{{cite web |url = http://android-developers.blogspot.com/2009/09/note-on-google-apps-for-android.html |title = A Note on Google Apps for Android |work = Android Developers Blog |first = Dan |last = Morrill |date = 25 September 2009 |accessdate =2009-09-26}}</ref> 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 application store 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.<ref>{{cite web |url = http://www.cyanogenmod.com/home/the-current-state |title = The current state... |work = CyanogenMod Android Rom |first = Cyanogen |date = 27 September 2009 |accessdate =2009-09-27}}</ref>
{{Main article| Comparison of Java and Android API}}
 
Obstacles to development include the fact that Android does not use established Java standards, that is, [[Java SE]] and [[Java ME|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.<ref>{{cite web
==Java Standards==
Obstacles to development include the fact that Android does not use established Java standards, i.e. [[Java SE]] and [[Java ME|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.<ref>{{cite web
| url=http://www.javalobby.org/nl/archive/jlnews_20071113o.html
| title=Google Android: Initial Impressions and Criticism
| date=13 November 13, 2007
| last=van Gurp
| first=Jilles
| work=Javalobby
| quote=''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''
| access-date=March 7, 2009
| accessdate=2009-03-07}}</ref> However, there are multiple tools in the market from companies such as [[Myriad Group]] and UpOnTek that provide J2ME to Android conversion services.<ref>{{cite web
| archive-date=August 28, 2008
| url=http://www.myriadgroup.com/Media-Centre/News/Myriad-New-J2Android-Converter-Fuels-Android-Applications-Gold-Rush.aspx
| archive-url=https://web.archive.org/web/20080828111808/http://www.javalobby.org/nl/archive/jlnews_20071113o.html
| title=Myriad's New J2Android Converter Fuels Android Applications Gold Rush
| url-status=usurped
| date=19 March 2010}}</ref><ref>{{cite web
}}</ref> However, there are multiple tools in the market from companies such as [[Myriad Group]] and UpOnTek that provide Java ME to Android conversion services.<ref>{{cite web
| url=http://www.javaworld.com/community/node/4170
|url = http://www.myriadgroup.com/Media-Centre/News/Myriad-New-J2Android-Converter-Fuels-Android-Applications-Gold-Rush.aspx
| title=J2Android hopes you don't know that Android is Java-based
|title = Myriad's New J2Android Converter Fuels Android Applications Gold Rush
| quote=''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.''
| date =23 March 2010}}</ref><ref>{{cite19, web2010
|access-date = May 13, 2011
| url=http://www.javaworld.com/community/?q=node/4210
|archive-url = https://web.archive.org/web/20110704072717/http://www.myriadgroup.com/Media-Centre/News/Myriad-New-J2Android-Converter-Fuels-Android-Applications-Gold-Rush.aspx
| title=Myriad CTO: J2Android moves MIDlets to "beautiful" Android framework
|archive-date = July 4, 2011
| quote=''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.''
|url-status = dead
| date=31 March 2010}}</ref>
|df = mdy-all
}}</ref><ref>{{cite web
|last1=Fruhlinger |first1=Josh
|date=2010-03-23 |df=mdy
|url=https://www.infoworld.com/article/2073306/j2android-hopes-you-don-t-know-that-android-is-java-based.html
|title=J2Android hopes you don't know that Android is Java-based
|work=[[JavaWorld]]
|access-date=2020-07-13
|quote=''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.''
}}</ref><ref>{{cite web
|last1=Fruhlinger |first1=Josh
|date=2010-03-31 |df=mdy
|url=https://www.infoworld.com/article/2073324/myriad-cto--j2android-moves-midlets-to--beautiful--android-framework.html
|title=Myriad CTO: J2Android moves MIDlets to "beautiful" Android framework
|work=[[JavaWorld]]
|access-date=2020-07-13
|quote=''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.''
}}</ref>
 
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|date=November 2019}}
==Fragmentation==
{{Update|type=section|date=May 2011}}
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,<ref>{{cite web |url = http://blogs.zdnet.com/Greenfield/?p=481 |title = Android's Weakest Link |publisher=[[ZDNet]] |date = 2009-10-11 |accessdate = 2010-01-15}}</ref> especially the different resolution ratios in use among various Android phones.
<ref>{{cite web |url = http://androidandme.com/2009/11/news/complications-looming-for-android-developers/ |title = Complications looming for Android developers |publisher=androidandme.com |date = 2009-11-06 |accessdate = 2010-01-15}}</ref>
 
==History and market share==
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 <ref>{{cite web |url =http://developer.android.com/resources/dashboard/platform-versions.html |title=Platform Versions |date = 2011-07-05|publisher=developer.android.com |accessdate = 2011-07-29}}</ref>. 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.
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.<ref name="MixedFeedback">{{cite web |url=https://arstechnica.com/news.ars/post/20071219-google-android-plagued-by-dysfunctional-development-process.html |title=Developing apps for Google Android: it's a mixed bag |access-date=December 19, 2007 |last=Paul |first=Ryan |date=December 19, 2007 |work=[[Ars Technica]]| archive-url= https://web.archive.org/web/20071220052053/http://arstechnica.com/news.ars/post/20071219-google-android-plagued-by-dysfunctional-development-process.html| archive-date= December 20, 2007 | url-status= live}}</ref> 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.)<ref>{{cite web |url=http://android-developers.blogspot.com/2008/01/you-cant-rush-perfection-but-now-you.html |title=You can't rush perfection, but now you can file bugs against it |work=Android Developers Blog |first=Dan |last=Morrill |date=January 18, 2008 |access-date=September 3, 2009}}</ref> 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."<ref name="Bugs">{{cite web |url=https://www.wsj.com/articles/SB119800856883537515 |title=Glitches Bug Google's Android Software |access-date=December 19, 2007 |last=Morrison |first=Scott |date=December 19, 2007 |work=The Wall Street Journal }}</ref> Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the [[Snake (video game genre)|Snake game]].<ref name="Snake">{{cite web |url=http://www.mobiles2day.com/2007/11/14/first-android-application-snake/ |title=First Android Application&nbsp;— Snake |access-date=January 7, 2008 |date=November 14, 2007 |work=Mobiles2day |archive-url=https://web.archive.org/web/20080511192655/http://www.mobiles2day.com/2007/11/14/first-android-application-snake/ |archive-date=May 11, 2008 |url-status=dead }}</ref>
 
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.<ref>{{cite web |url=https://www.theregister.co.uk/2008/07/14/android_developer_unrest/ |title=Google plays Hide and Seek with Android SDK |first=Cade |last=Metz |date=July 14, 2008 |access-date=October 23, 2008 |work=[[The Register]]| archive-url= https://web.archive.org/web/20081006032345/https://www.theregister.co.uk/2008/07/14/android_developer_unrest/| archive-date= October 6, 2008 | url-status= live}}</ref>
Such problems were pointedly brought into focus as they were encountered during the ADC2 contest.<ref>{{cite web |url = http://www.techcrunch.com/2009/10/11/a-chink-in-androids-armor/ |title = A Chink In Android's Armor |date = 2009-10-11 |publisher=[[TechCrunch]] |quote=''And now they're faced with a landslide of new handsets, some running v.1.6 and some courageous souls even running android v.2.0. All those manufacturers/carriers are racing to release their phones by the 2009 holiday season, and want to ensure the hot applications will work on their phones. And here's the problem&nbsp;– in almost every case, we hear, there are bugs and more serious problems with the apps.[...]First of all, the compatibility between versions issue may be overblown. The reported problems have been limited to an Android developer contest[...]We haven’t heard of any major app developers complaining of backwards or forward compatibility problems. Also, I’ve now upgraded my phone from 1.5 to 1.6, and every application continues to work fine.'' |accessdate = 2009-10-11}}</ref> 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.<ref>{{cite web |url = http://www.wired.com/gadgetlab/2009/11/android-fragmentation/ |title = Android’s Rapid Growth Has Some Developers Worried |date = 2009-11-16 |publisher=[[Wired News]] |quote=''Fagan’s concerns about the fragmentation of Android is being echoed by other developers, says Sean Galligan, vice president of business development at Flurry, an mobile app analytics company(...)"You may build an app that works perfectly with all three firmwares, but then when you run it on carriers’ ROMs it completely blows up," says Fagan. "So we find ourselves having to create apps that are compatible with multiple firmwares, multiple ROMs and multiple devices with different hardware.'' |accessdate = 2010-02-26}}</ref><ref>{{cite web |url = http://www.javaworld.com/community/node/3704 |title = Android just reproducing Java ME's problems, now |date = 2009-11-17 |publisher=[[JavaWorld]] |accessdate = 2010-02-26}}</ref><ref>{{cite web |url = http://www.businessweek.com/technology/content/oct2009/tc20091015_626136.htm |title = Android's Spread Could Become a Problem |date = 2009-10-15 |publisher=[[Bloomberg BusinessWeek|BusinessWeek]] |accessdate = 2010-02-28}}</ref><ref>{{cite web |url = http://infoworld.com/d/mobilize/google-androids-self-destruction-derby-begins-863 |title = Google Android's self-destruction derby begins |date = 2010-02-22 |publisher=[[InfoWorld]] |accessdate = 2010-02-28}}</ref>
 
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.<ref>{{cite web |url=https://code.google.com/android/intro/upgrading.html |title=Android&nbsp;— An Open Handset Alliance Project: Upgrading the SDK |access-date=October 24, 2008| archive-url= https://web.archive.org/web/20080913131056/http://code.google.com/android/intro/upgrading.html| archive-date= September 13, 2008}}</ref> On September 23, 2008, the Android 1.0 SDK (Release 1) was released.<ref>{{cite web |url=http://developer.android.com/sdk/older_releases.html |title=Other SDK Releases |access-date=September 2, 2009 |work=Android Developers}}</ref> 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.<ref>{{Cite web|url=https://developer.android.com/sdk/older_releases|title=SDK Archives|website=Android Developers}}</ref>
==History==
[[Image:Android mobile phone platform early device.jpg|thumb|200px|Early Android device.]]
Android is created by the Open Handset Alliance which is lead by Google.<ref>[http://androiddevelopmenttutorial.net Android Development Tutorial ]</ref> The early feedback on developing applications for the Android platform was mixed.<ref name="MixedFeedback">{{cite web |url=http://arstechnica.com/news.ars/post/20071219-google-android-plagued-by-dysfunctional-development-process.html |title=Developing apps for Google Android: it's a mixed bag |accessdate=2007-12-19 |last=Paul |first=Ryan |date=2007-12-19 |work=[[Ars Technica]]}}</ref> 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.)<ref>{{cite web |url=http://android-developers.blogspot.com/2008/01/you-cant-rush-perfection-but-now-you.html |title=You can't rush perfection, but now you can file bugs against it |work=Android Developers Blog |first=Dan |last=Morrill |date=18 January 2008 |accessdate=2009-09-03}}</ref> 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."''<ref name="Bugs">{{cite web |url=http://online.wsj.com/article_email/SB119800856883537515-lMyQjAxMDE3OTE4ODAxMDg4Wj.html |title=Glitches Bug Google's Android Software |accessdate=2007-12-19 |last=Morrison |first=Scott |date=2007-12-19 |work=The Wall Street Journal |publisher= }}</ref> Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the [[Snake (video game)|Snake game]].<ref>{{cite web |url=http://www.android-freeware.org/download/snake |title=Snake |accessdate=2008-01-26 |work=Android Freeware Directory}}</ref><ref name="Snake">{{cite web |url=http://www.mobiles2day.com/2007/11/14/first-android-application-snake/ |title=First Android Application&nbsp;— Snake |accessdate=2008-01-07 |date=2007-11-14 |work=Mobiles2day |publisher= }}</ref>
The [[Android Dev Phone]] is a [[Subscriber Identity Module|SIM]]-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.
 
On December 5, 2008, Google announced the first [[Android Dev Phone]], a [[Subscriber Identity Module|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.
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.<ref>{{cite web |url=http://www.theregister.co.uk/2008/07/14/android_developer_unrest/ |title=Google plays Hide and Seek with Android SDK |first=Cade |last=Metz |date=14 July 2008 |accessdate=2008-10-23 |work=[[The Register]]}}</ref>
 
{{As of|July 2013}}, more than one million applications have been developed for Android,<ref>{{cite web|url=http://mashable.com/2013/07/24/google-play-1-million/|title=Google Play Hits 1 Million Apps|date=July 24, 2013|work=Mashable}}</ref> with over 25 billion downloads.<ref name="200,000">{{cite web|title=Android App Stats |url=http://www.androlib.com/appstats.aspx |access-date=December 31, 2010 |archive-url=https://web.archive.org/web/20110102122636/http://www.androlib.com/appstats.aspx |archive-date=January 2, 2011 |url-status=dead }}</ref><ref>{{cite web |url= https://techcrunch.com/2011/04/14/google-3-billion-android-apps-installed-up-50-percent-from-last-quarter/ |title=Google: 3 Billion Android Apps Installed; Downloads Up 50 Percent From Last Quarter |author=Leena Rao|work=Techcrunch|date=April 14, 2011|access-date=May 13, 2011| archive-url= https://web.archive.org/web/20110425062025/http://techcrunch.com/2011/04/14/google-3-billion-android-apps-installed-up-50-percent-from-last-quarter/| archive-date= April 25, 2011 | url-status= live}}</ref> A June 2011 research indicated that over 67% of mobile developers used the platform, at the time of publication.<ref>{{cite web |url =http://www.visionmobile.com/blog/2011/06/developer-economics-2011-winners-and-losers-in-the-platform-race/ |title =Developer Economics 2011 |access-date =July 8, 2011 |archive-url =https://web.archive.org/web/20130929064053/http://www.visionmobile.com/blog/2011/06/developer-economics-2011-winners-and-losers-in-the-platform-race/ |archive-date =September 29, 2013 |url-status =dead }}</ref> Android smartphone shipments ware forecast to exceed 1.2 billion units in 2018 with an 85% market share.<ref>{{cite web |url=https://www.idc.com/getdoc.jsp?containerId=prUS43856818 |title=Worldwide Smartphone Volumes Will Remain Down in 2018 Before Returning to Growth in 2019 and Beyond, According to IDC |work=idc.com |date=May 30, 2018 |access-date=June 6, 2018 |archive-date=October 17, 2019 |archive-url=https://web.archive.org/web/20191017081207/https://www.idc.com/getdoc.jsp?containerId=prUS43856818 |url-status=dead }}</ref>
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.<ref>{{cite web |url=http://code.google.com/android/intro/upgrading.html |title=Android&nbsp;— An Open Handset Alliance Project: Upgrading the SDK |accessdate=2008-10-24}}{{Dead link|date=September 2009}}</ref> On 23 September 2008 the Android 1.0 SDK (Release 1) was released.<ref>{{cite web |url=http://developer.android.com/sdk/older_releases.html |title=Other SDK Releases |accessdate=2009-09-02 |work=Android Developers}}</ref> 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.<ref>{{cite web |url=http://developer.android.com/sdk/older_releases.html |title=SDK Archives}}</ref>
 
==See References also==
{{Wikiversity|Android programming}}
{{Reflist|colwidth=30em}}
* [[Android Studio]]
* [[List of free and open-source Android applications]]
* [[Rooting (Android)]]
 
==References==
{{reflist}}
 
==Bibliography==
{{Refbegin}}
* {{Cite book |first1 = Burnette
| first1 last1 = BurnetteEd
|date last1 = July =13, Ed2010
|title = Hello, Android: Introducing Google's Mobile Development Platform
| date = 13 July 2010
|publisher = [[Pragmatic Bookshelf]]
| title = Hello, Android: Introducing Google's Mobile Development Platform
|edition = 3rd
| publisher = [[Pragmatic Bookshelf]]
|isbn edition = 3rd978-1-934356-56-2
|url = https://archive.org/details/isbn_9781934356562
| isbn = 1934356562
| url = http://pragprog.com/titles/eband3/hello-android
}}
* {{Cite book
Line 99 ⟶ 128:
| date = January 2011
| title = Android in Action, Second Edition
| publisher = [[Manning Publications|Manning]]
| edition = 2nd
| isbn = 9781935182726978-1-935182-72-6
| url =
}}
* {{Cite book
Line 109 ⟶ 137:
| first2 = Lauren
| last2 = Darcey
| date = SeptemberJuly 724, 20092012
| title = Android Wireless Application Development Volume II: Advanced Topics
| publisher = [[Addison-Wesley Professional]]
| edition = 1st3rd
| isbn = 0321627091978-0-321-81384-8
| url = http://www.informit.com/store/product.aspx?isbn=03216270910321813847
}}
* {{Cite book
Line 123 ⟶ 151:
| publisher = [[Apress]]
| edition = 1st
| isbn = 1430224193978-1-4302-2419-8
| url = http://www.apress.com/9781430224198
}}
* {{Cite book |first1 = Reto
| first1 last1 = RetoMeier
|date last1 = March = Meier2010
|title = Professional Android 2 Application Development
| date = March 2010
|publisher = [[Wrox Press]]
| title = Professional Android 2 Application Development
|edition = 1st
| publisher = [[Wrox Press]]
|isbn edition = 1st978-0-470-56552-0
|url = https://archive.org/details/professionalandr00meie_0
| isbn = 9780470565520
| url = http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-Application-Development.productCd-0470565527.html
}}
* {{Cite book
Line 143 ⟶ 170:
| publisher = [[Apress]]
| edition = 1st
| isbn = 1430210648978-1-4302-1064-1
| url = http://www.apress.com/9781430210641
}}
* {{Cite book
| first1 = Ian
| last1 = Clifton
| date = August 3, 2012
| title = The Essentials of Android Application Development LiveLessons (Video Training)
| publisher = [[Addison-Wesley Professional]]
| edition = 1st
| isbn = 978-0-13-299658-7
| url = https://mistersaad.com/lifecycle-of-a-mobile-application-development/
}}
{{Refend}}
 
{{Wikibooks|Android}}
== External links ==
* [http://developer.android.com/ Android Developers]
* [http://android-developers.blogspot.com/ Android Developers Blog]
* [http://code.google.com/android Google Projects for Android] from [[Google Code]]
* [http://www.makelinux.net/android/internals/ Diagram of Android internals]
* [http://www.makelinux.net/android/classes/ Hypertext map of Android API classes]
 
{{Android}}
{{Table Mobile operating systems}}
{{Google Inc.LLC}}
{{Linux}}
 
[[Category:Android (operating system)|Software development]]
<!--- Categories --->
[[Category:SmartphonesAndroid (operating system) development software| ]]
[[Category:Embedded Linux]]
[[Category:GoogleFree mobile software]]
[[Category:Mobile Linux]]
[[Category:MobileAndroid open(operating sourcesystem) software|development]]
[[Category:AndroidSoftware (operatingdeveloper system)communities]]
[[Category:AndroidSoftware development softwareby platforms]]