Android software development

Android software development is the process by which new 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-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 languages/programming 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. In addition, with major business entities like Walmart, Amazon, Bank of America etc. eyeing to engage and sell through mobiles, mobile application development is witnessing a transformation.[4]

Android open source project
The Android stack[1]
Nexus 4
The Nexus 4, part of the Google Nexus series, a line of "developer-friendly" devices[2]

Official development tools

Android SDK

Android SDK
Developer(s)Google
Initial releaseOctober 2009
Stable release
26.1.1 / September 2017[5]
Written inJava
Operating systemCross-platform
Available inภาษาไทย
TypeIDE, SDK
Websitedeveloper.android.com/sdk/index.html

The Android software development kit (SDK) includes a comprehensive set of development tools.[6] These include a debugger, libraries, a handset emulator based on QEMU, documentation, sample code, and tutorials. Currently supported development platforms include computers running Linux (any modern desktop Linux distribution), Mac OS X 10.5.8 or later, and Windows 7 or later. As of March 2015, the SDK is not available on Android itself, but software development is possible by using specialized Android applications.[7][8][9]

Until around the end of 2014, the officially-supported integrated development environment (IDE) was Eclipse using the Android Development Tools (ADT) Plugin, though IntelliJ IDEA IDE (all editions) fully supports Android development out of the box,[10] and NetBeans IDE also supports Android development via a plugin.[11] As of 2015, Android Studio,[12] made by Google and powered by IntelliJ, is the official IDE; however, developers are free to use others, but Google made it clear that ADT was officially deprecated since the end of 2015 to focus on Android Studio as the official Android IDE. Additionally, 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).[13][7]

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.[14]

Android applications are packaged in .apk format and stored under /data/app folder on the Android OS (the folder is accessible only to the root user for security reasons). APK package contains .dex files[15] (compiled byte code files called Dalvik executables), resource files, etc.

Android SDK Platform 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.

Android Debug Bridge (adb)

The Android Debug Bridge (adb) is a tool to run commands on a connected Android device. The adbd daemon runs on the device, and the adb client starts a background server to multiplex commands sent to devices. In addition to the command-line interface,[16] numerous graphical user interfaces exist to control adb.

The format for issuing commands is typically:

adb [-d|-e|-s <serialNumber>] <command>
where -d is the option for specifying the single USB-attached device,
      -e for the single running Android emulator on the computer,
      -s for specifying a USB-attached device by its unique serial number.
If there is only one attached device or running emulator, these options are not necessary.

For example, Android applications can be saved by the command backup to a file, whose name is backup.ab by default.[17]

In a security issue reported in March 2011, ADB was targeted as a vector to attempt to install a rootkit on connected phones using a "resource exhaustion attack".[18]

Fastboot

Fastboot is a diagnostic protocol included with the SDK package used primarily to modify the flash filesystem via a USB connection from host computer. It requires that the device be started in a boot loader or Secondary Program Loader mode, in which only the most basic hardware initialization is performed. After enabling the protocol on the device itself, it will accept a specific set of commands sent to it via USB using a command line. Some of the most commonly used fastboot commands include:

  • flash – rewrites a partition with a binary image stored on the host computer.
  • erase – erases a specific partition.
  • reboot – reboots the device into either the main operating system, the system recovery partition or back into its boot loader.
  • devices – displays a list of all devices (with the serial number) connected to the host computer.
  • format – formats a specific partition; the file system of the partition must be recognized by the device.

Android NDK

Android NDK
Developer(s)Google
Initial releaseJune 2009[19]
Stable release
r19 / January 2019[19]
Written inC and C++
Operating system
PlatformIA-32 (Windows only) or x86-64 (Windows,[20] macOS and Linux)
Available inEnglish
TypeSDK
Websitedeveloper.android.com/ndk/

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). The NDK uses the Clang compiler to compile C/C++. GCC was included until NDK r17, but removed in r18 in 2018.

Native libraries can be called from Java code running under the Android Runtime using System.loadLibrary, part of the standard Android Java classes.[21][22]

Command-line tools can be compiled with the NDK and installed using adb.[23]

Android uses Bionic as its C library, and the LLVM libc++ as its C++ Standard Library. The NDK also includes a variety of other APIs:[24] zlib compression, OpenGL ES or Vulkan graphics, OpenSL ES audio, and various Android-specific APIs for things like logging, access to cameras, or accelerating neural networks.

The NDK includes support for CMake and its own ndk-build (based on GNU Make). Android Studio supports running either of these from Gradle. Other third-party tools allow integrating the NDK into Eclipse[25] and Visual Studio.[26]

For CPU profiling, the NDK also includes simpleperf[27] which is similar to the Linux perf tool, but with better support for Android and specifically for mixed Java/C++ stacks.

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.[28]

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.

Third-party development tools

AIDE

  • AIDE (Android application), An Android app that allows Android apps development directly using the device. It compiles and installs the created app in the device.

Android::Build

Android::Build is a Perl CPAN module which enables callers to build an Android APK file using only the basic command line tools: aapt, dx, javac, jarsigner, zipalign without having to rely on either Apache Ant or Gradle. This reduced dependency set simplifies continuous release systems which rely on fully automated remote app generation and testing.

App Inventor for Android

On July 12, 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.[29] "We could only have done this because Android’s architecture is so open," said the project director, MIT's Hal Abelson.[30] Under development for over a year,[31] the block-editing tool has been taught to non-majors in computer science at Harvard, MIT, Wellesley, Trinity College (Hartford,) 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.[32][33]

In the second half of 2011, Google released the source code, terminated its Web service, and provided funding for the creation of The MIT Center for Mobile Learning, led by the App Inventor creator Hal Abelson and fellow MIT professors Eric Klopfer and Mitchel Resnick.[34] The latest version created as the result of Google–MIT collaboration was released in February 2012, while the first version created solely by MIT was launched in March 2012[35] and upgraded to App Inventor 2 in December 2013.[36] As of 2014, App Inventor is maintained by MIT.

Basic4android

Basic4android is a commercial product similar to Simple.[37] It is inspired by Microsoft Visual Basic 6 and Microsoft Visual Studio. It makes android programming much simpler for regular Visual Basic programmers who find coding in Java difficult. Basic4android is very active,

Coreliu

Coreliu enables non-technical users to write immersive educational apps which run natively on Android devices.[38] App authors use a file held in a GitHub repository to describe the images and text to be used in the app. Speech is generated from the text via Amazon Web Services Polly. Coreliu packages the photos and generated speech into an Android APK file that the author can distribute freely using a Creative Commons License.

Corona SDK

Corona SDK is a software development kit (SDK) created by Walter Luh, founder of Corona Labs Inc.. Corona SDK allows software programmers to build mobile applications for iPhone, iPad and Android devices.

Corona lets developers build graphic applications by using its integrated Lua language, which is layered on top of C++/OpenGL. The SDK uses a subscription-based purchase model, without requiring any per-application royalties and imposes no branding requirements.

Delphi

Delphi can also be used for creating Android application in the Object Pascal language. The latest release is Delphi 10 Seattle, developed by Embarcadero.[39] User interfaces are developed using the cross-platform GUI framework Firemonkey. Additionally, non-visual components for interaction with the various sensors (like Camera, Gyroscope, GPS and Bluetooth etc.) are available. Other services, such as access to certain keyboard events, are available in a platform-independent manner as well; this is done using interfaces. The compiler is based on the LLVM architecture, and debugging from IDE is possible. The generated apps are based on the NDK, but in contrast to Xamarin, the runtime is compiled into the application itself.

DroidScript

A rapid application development tool for developing native Android applications using JavaScript. This tool can be used directly on the mobile device or via a browser based IDE connected to the device via WiFi. It makes use of Google's Chrome V8 JavaScript engine.

Golang

Since version 1.4 of the Go programming language, writing applications for Android is supported. With Go version 1.7, and with the help of the gomobile tool (i.e. gomobile build), compiling to Android APK and iOS apps is supported from the same Go codebase. Strictly speaking, Java/JVM code is always needed to run on Android, but the gomobile tool provides the minimal JVM code needed (or Objective-C code needed in case of iOS). Go support is restricted to what Go types can be used and (currently) to a restricted set of Android APIs (e.g. OpenAL and OpenGL ES 2 bindings are provided that could be used to make 2D/3D games, such one of the provided examples[40] for Android or iOS, or other graphics applications).[41]

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 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 and is loosely based on Hypercard's HyperTalk 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.

Kivy

Kivy is an open source Python library for developing multitouch application software with a natural user interface (NUI) for a wide selection of devices. Kivy provides the possibility of maintaining a single application for numerous operating systems ("code once, run everywhere"). Kivy has a custom-built deployment tool for deploying mobile applications called Bulldozer, which is available only for Linux. Bulldozer is currently alpha software but is far less cumbersome than older Kivy deployment methods. Applications programmed with Kivy can be submitted to any Android mobile application distribution platform.

Lazarus

The Lazarus IDE may be used to develop Android applications using Object Pascal (and other Pascal dialects), based on the Free Pascal compiler starting from version 2.7.1.

Processing

The Processing environment, which also uses the Java language, has supported an Android mode since version 1.5; integration with device camera and sensors is possible using the Ketai library.

Qt for Android

Qt for Android enables Qt 5 applications to run on devices with Android v2.3.3 (API level 10) or later.[42] Qt is a cross-platform application framework which can target platforms such as Android, Linux, iOS, Sailfish OS and Windows. Qt application development is done in standard C++ and QML, requiring both the Android NDK and SDK.[43] Qt Creator is the integrated development environment provided with the Qt Framework for multi-platform application development.

RubyMotion

RubyMotion is a toolchain to write native mobile apps in Ruby. As of version 3.0, RubyMotion supports Android. RubyMotion Android apps can call into the entire set of Java Android APIs from Ruby, can use 3rd-party Java libraries, and are statically compiled into machine code.[44]

SDL

The SDL library offers also a development possibility beside Java, allowing the development with C and the simple porting of existing SDL and native C applications. By injection of a small Java shim and JNI the usage of native SDL code is possible,[45] allowing Android ports like e.g. the Jagged Alliance 2 video game.[46]

Visual Studio Emulator for Android

Microsoft shipped in 2015 a free stand-alone emulator for Android, dubbed Visual Studio Emulator for Android.[47] The emulator supports installation of Google Play through a drag-and-drop interface.[48] It can work in conjunction with Visual Studio, which supports cross-platform development, letting C++ developers create projects from templates for Android native-activity applications, or create high-performance shared libraries to include in other solutions. Its features include platform-specific IntelliSense, breakpoints, device deployment and emulation.[49]

Xamarin

With a C# shared codebase, developers can use Xamarin to write native iOS, Android, and Windows apps with native user interfaces and share code across multiple platforms.

Android Developer Challenge

The Android Developer Challenge was a competition to find the most innovative application for Android.[50] 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.[51][52] It ended in early September with the announcement of ten teams that received $275,000 each, and ten teams that received $100,000 each.[53]

ADC II was announced on May 27, 2009.[54] The first round of the ADC II closed on October 6, 2009.[55] 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.[56][57]

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.[58] 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.[59] 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.[60]

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[61] to the modder Cyanogen, citing issues with the re-distribution of Google's closed-source applications[62] 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 has complied with Google's wishes and is continuing to distribute this mod without the proprietary software. It has provided a method to back up licensed Google applications during the mod's install process and restore them when the process is complete.[63]

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.[64] However, there are multiple tools in the market from companies such as Myriad Group and UpOnTek that provide Java ME to Android conversion services.[65][66][67]

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

History and market share

HTC HT722G700375 20080211
The "Sooner" prototype phone,[68] prior to "Dream"

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.[69] 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.)[70] 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."[71] Despite this, Android-targeted applications began to appear the week after the platform was announced. The first publicly available application was the Snake game.[72][73]

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.[74]

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.[75] On September 23, 2008, the Android 1.0 SDK (Release 1) was released.[76] 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.[77]

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,[78] with over 25 billion downloads.[79][80] A June 2011 research indicated that over 67% of mobile developers used the platform, at the time of publication.[81] Android smartphone shipments are forecast to exceed 1.2 billion units in 2018 with an 85% market share.[82]

See also

References

  1. ^ "The Android Source Code". source.android.com. Retrieved February 2, 2017.
  2. ^ Syed H (September 24, 2012). "Editorial: Why You Should Go Nexus". Droid Lessons. Retrieved April 17, 2013.
  3. ^ Android Developers Application Fundamentals
  4. ^ Rakars, Ash (May 31, 2018). "How Wearables Influence the Future of Mobile Application Development?".
  5. ^ "SDK Tools | Android Developers". Developer.android.com. Retrieved April 25, 2018.
  6. ^ "Tools Overview". Android Developers. July 21, 2009.
  7. ^ a b appfour. "AIDE- IDE for Android Java C++ - Android Apps on Google Play". google.com.
  8. ^ gesturedevelop. "Java Editor - Android Apps on Google Play". google.com.
  9. ^ Tanapro GmbH, Tom Arn. "JavaIDEdroid - Android Apps on Google Play". google.com.
  10. ^ "IntelliJ Android Development". Retrieved September 19, 2012.
  11. ^ "NBAndroid Plugin". Retrieved September 19, 2012.
  12. ^ "Android Studio".
  13. ^ Westfall, Jon (August 25, 2009). "Backup & Restore Android Apps Using ADB". JonWestfall.com. Retrieved December 7, 2009.
  14. ^ "SDK Tools".
  15. ^ "Android SDK Glossary".
  16. ^ "Android Debug Bridge | Android Developers" Accessed December 27, 2012
  17. ^ Jack Wallen (2015-03-06). "How to create a full backup of your Android device without root". Retrieved 2016-01-29.
  18. ^ Lemos, Robert "Open source vulnerabilities paint a target on Android"
  19. ^ a b "Android NDK | Android Developers". Developer.android.com. November 13, 2012. Retrieved March 13, 2014.
  20. ^ "NDK Downloads | Android Developers". developer.android.com. Retrieved 2018-04-24.
  21. ^ Srinivas, Davanum (December 9, 2007). "Android — Invoke JNI based methods (Bridging C/C++ and Java)". Archived from the original on December 16, 2008. Retrieved December 13, 2008.
  22. ^ "java.lang.System". Android Developers. Retrieved September 3, 2009.
  23. ^ https://developer.android.com/studio/command-line/adb.html
  24. ^ https://developer.android.com/ndk/guides/stable_apis
  25. ^ "Using Eclipse for Android C/C++ Development".
  26. ^ "Tutorial: Android Native Development with Visual Studio".
  27. ^ https://developer.android.com/ndk/guides/simpleperf
  28. ^ "Accessory Development Kit | Android Developers". Developer.android.com. Retrieved October 2, 2012.
  29. ^ Claburn, Thomas (July 12, 2010). "Google App Inventor Simplifies Android Programming". Information Week. Archived from the original on July 15, 2010. Retrieved July 12, 2010.
  30. ^ Lohr, Steve (July 11, 2010). "Google's Do-It-Yourself App Creation Software". New York Times. Archived from the original on July 15, 2010. Retrieved July 12, 2010.
  31. ^ Abelson, Hal (July 31, 2009). "App Inventor for Android". Google Research Blog. Archived from the original on August 7, 2010. Retrieved July 12, 2010.
  32. ^ Kim, Ryan (December 11, 2009). "Google brings app-making to the masses". San Francisco Chronicle. Archived from the original on July 17, 2010. Retrieved July 12, 2010.
  33. ^ Wolber, David. "AppInventor.org". Archived from the original on July 15, 2010. Retrieved July 12, 2010.
  34. ^ Hardesty, Larry (August 19, 2010). "The MIT roots of Google's new software". MIT News Office. Retrieved October 1, 2015.
  35. ^ Clark, Andrew (December 30, 2013). "App Inventor launches second iteration".
  36. ^ "App Inventor Classic | Explore MIT App Inventor". Appinventor.mit.edu. December 3, 2013. Retrieved March 13, 2014.
  37. ^ "Basic4android".
  38. ^ "Coreliu".
  39. ^ "Delphi Xe7".
  40. ^ "Command flappy". godoc.org. Retrieved 2018-07-17.
  41. ^ "Package app, which lets you write Apps for Android (and eventually, iOS)". Retrieved 2015-06-09. There are two ways to use Go in an Android App. The first is as a library called from Java, the second is to use a restricted set of features but work entirely in Go. An app written entirely in Go results in a significantly simpler programming environment (and eventually, portability to iOS), however only a very restricted set of Android APIs are available. The provided interfaces are focused on games. It is expected that the app will draw to the entire screen (via OpenGL, see the go.mobile/gl package), and that none of the platform's screen management infrastructure is exposed. On Android, this means a native app is equivalent to a single Activity (in particular a NativeActivity) and on iOS, a single UIWindow. Touch events will be accessible via this package. When Android support is out of preview, all APIs supported by the Android NDK will be exposed via a Go package.
  42. ^ "Qt for Android".
  43. ^ "Qt Wiki : Android".
  44. ^ "Announcing RubyMotion 3.0: Android Platform and More".
  45. ^ "Simple DirectMedia Layer for Android". sdl.org. August 12, 2012. Archived from the original on June 4, 2012. Retrieved September 9, 2012. How the port works, - Android applications are Java-based, optionally with parts written in C, - As SDL apps are C-based, we use a small Java shim that uses JNI to talk to the SDL library, - This means that your application C code must be placed inside an android Java project, along with some C support code that communicates with Java, - This eventually produces a standard Android .apk package
  46. ^ JA2 Stracciatella Feedback " Jagged Alliance 2 Android Stracciatella Port RC2 Release - please test Archived October 23, 2012, at the Wayback Machine on the Bear's Pit Forum, October 3, 2011
  47. ^ Mike Williams (July 21, 2015), "Microsoft ships stand-alone Android Emulator", Betanews, retrieved March 14, 2018
  48. ^ Rob Prouse (February 2, 2017), Installing Google Play (GApps) on Visual Studio Android Emulators (2017 version), retrieved March 14, 2018
  49. ^ "Visual C++ Cross-Platform Mobile". Retrieved May 27, 2015.
  50. ^ "what makes an android development so good".
  51. ^ Chen, Jason (May 12, 2008). "The Top 50 Applications". Android Developers Blog. Archived from the original on September 25, 2009. Retrieved September 4, 2009.
  52. ^ Brown, Eric (May 13, 2008). "Android Developer Challenge announces first-round winners". Linux for Devices. Archived from the original on May 14, 2008.
  53. ^ "ADC I Top 50 Gallery". Android Developer Challenge. Retrieved May 19, 2009.
  54. ^ "Android Developer Challenge". Google Code. Retrieved January 11, 2008.
  55. ^ 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.
  56. ^ "ADC 2 Overall Winners". Android Developer Challenge. Google. Archived from the original on January 4, 2011. Retrieved December 5, 2010.
  57. ^ Kharif, Olga (November 30, 2009). "Android Developer Challenge 2 Winners Announced". BusinessWeek. Retrieved December 5, 2010.
  58. ^ "Dream android development". xda-developers forum. Retrieved September 11, 2009.
  59. ^ "Rooting: Advantages and Disadvantages". ITCSE forum. Retrieved September 21, 2013.
  60. ^ "Android 2.1 from Motorola Droid Ported to G1". Volt Mobile. March 10, 2010.
  61. ^ Wimberly, Taylor (September 24, 2009). "CyanogenMod in trouble?". Android and me. Archived from the original on October 3, 2009. Retrieved September 26, 2009.
  62. ^ 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.
  63. ^ "The current state..." CyanogenMod Android Rom. September 27, 2009. Archived from the original on November 3, 2009. Retrieved September 27, 2009.
  64. ^ van Gurp, Jilles (November 13, 2007). "Google Android: Initial Impressions and Criticism". Javalobby. 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
  65. ^ "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.
  66. ^ "J2Android hopes you don't know that Android is Java-based". March 23, 2010. 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.
  67. ^ "Myriad CTO: J2Android moves MIDlets to "beautiful" Android framework". March 31, 2010. 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.
  68. ^ Richard Devine (May 6, 2012). "Google Sooner prototype appears, shows off one Google's first prototype builds of Android". androidcentral.com. Retrieved March 1, 2015.
  69. ^ 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.
  70. ^ 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.
  71. ^ Morrison, Scott (December 19, 2007). "Glitches Bug Google's Android Software". The Wall Street Journal. Retrieved December 19, 2007.
  72. ^ "Snake". Android Freeware Directory. Retrieved January 26, 2008.
  73. ^ "First Android Application — Snake". Mobiles2day. November 14, 2007. Retrieved January 7, 2008.
  74. ^ 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.
  75. ^ "Android — An Open Handset Alliance Project: Upgrading the SDK". Archived from the original on September 13, 2008. Retrieved October 24, 2008.
  76. ^ "Other SDK Releases". Android Developers. Retrieved September 2, 2009.
  77. ^ "SDK Archives".
  78. ^ "Google Play Hits 1 Million Apps". Mashable. July 24, 2013.
  79. ^ "Android App Stats". Archived from the original on January 2, 2011. Retrieved December 31, 2010.
  80. ^ 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.
  81. ^ "Developer Economics 2011".
  82. ^ "Worldwide Smartphone Volumes Will Remain Down in 2018 Before Returning to Growth in 2019 and Beyond, According to IDC". idc.com. May 30, 2018. Retrieved June 6, 2018.

Bibliography

Android (operating system)

Android is a mobile operating system developed by Google. It is based on a modified version of the Linux kernel and other open source software, and is designed primarily for touchscreen mobile devices such as smartphones and tablets. In addition, Google has further developed Android TV for televisions, Android Auto for cars, and Wear OS for wrist watches, each with a specialized user interface. Variants of Android are also used on game consoles, digital cameras, PCs and other electronics.

Initially developed by Android Inc., which Google bought in 2005, Android was unveiled in 2007, with the first commercial Android device launched in September 2008. The operating system has since gone through multiple major releases, with the current version being 9 "Pie", released in August 2018. Google released the first Android Q beta on all Pixel phones on March 13, 2019. The core Android source code is known as Android Open Source Project (AOSP), and is primarily licensed under the Apache License.

Android is also associated with a suite of proprietary software developed by Google, called Google Mobile Services (GMS) that very frequently comes pre-installed in devices, which usually includes the Google Chrome web browser and Google Search and always includes core apps for services such as Gmail, as well as the application store and digital distribution platform Google Play, and associated development platform. These apps are licensed by manufacturers of Android devices certified under standards imposed by Google, but AOSP has been used as the basis of competing Android ecosystems, such as Amazon.com's Fire OS, which use their own equivalents to GMS.

Android has been the best-selling OS worldwide on smartphones since 2011 and on tablets since 2013. As of May 2017, it has over two billion monthly active users, the largest installed base of any operating system, and as of December 2018, the Google Play store features over 2.6 million apps.

Android Developer Lab

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.

Bootcamp is a hands-on training experience where Google engineers show attendees how to get started with Android development, from Android SDK installation to the creation of Android applications.

Technical Sessions are presentations where Google engineers speak about key Android features and show developers how to use them effectively to create high quality applications.

Android Runtime

Android Runtime (ART) is an application runtime environment used by the Android operating system. Replacing Dalvik, the process virtual machine originally used by Android, ART performs the translation of the application's bytecode into native instructions that are later executed by the device's runtime environment.Android 2.2 "Froyo" brought trace-based just-in-time (JIT) compilation into Dalvik, optimizing the execution of applications by continually profiling applications each time they run and dynamically compiling frequently executed short segments of their bytecode into native machine code. While Dalvik interprets the rest of application's bytecode, native execution of those short bytecode segments, called "traces", provides significant performance improvements.Unlike Dalvik, ART introduces the use of ahead-of-time (AOT) compilation by compiling entire applications into native machine code upon their installation. By eliminating Dalvik's interpretation and trace-based JIT compilation, ART improves the overall execution efficiency and reduces power consumption, which results in improved battery autonomy on mobile devices. At the same time, ART brings faster execution of applications, improved memory allocation and garbage collection (GC) mechanisms, new applications debugging features, and more accurate high-level profiling of applications.To maintain backward compatibility, ART uses the same input bytecode as Dalvik, supplied through standard .dex files as part of APK files, while the .odex files are replaced with Executable and Linkable Format (ELF) executables. Once an application is compiled by using ART's on-device dex2oat utility, it is run solely from the compiled ELF executable; as a result, ART eliminates various application execution overheads associated with Dalvik's interpretation and trace-based JIT compilation. As a downside, ART requires additional time for the compilation when an application is installed, and applications take up slightly larger amounts of secondary storage (which is usually flash memory) to store the compiled code. Android 4.4 KitKat brought a technology preview of ART, including it as an alternative runtime environment and keeping Dalvik as the default virtual machine. In the subsequent major Android release, Android 5.0 Lollipop, Dalvik was entirely replaced by ART. Android 7.0 Nougat introduced JIT compiler with code profiling to ART, which lets it constantly improve the performance of Android apps as they run. The JIT compiler complements ART's current Ahead of Time compiler and helps improve runtime performance.

Android application package

Android Package (APK) is the package file format used by the Android operating system for distribution and installation of mobile apps and middleware.

APK files are analogous to other software packages such as APPX in Microsoft Windows or a Debian package in Debian-based operating system. To make an APK file, a program for Android is first compiled, and then all of its part are packaged into one container file. An APK file contains all of a program's code (such as .dex files), resources, assets, certificates, and manifest file. As is the case with many file formats, APK files can have any name needed, provided that the file name ends in the file extension ".apk".APK files are a type of archive file, specifically in zip format-type packages, based on the JAR file format, with .apk as the filename extension. The MIME type associated with APK files is application/vnd.android.package-archive.APK files can be installed on Android-powered devices just like installing software on a PC. When a user downloads and installs an Android application, from either an official source (such as the Google Play Store), or from an unofficial site, they are installing an APK file on to their device. A user or developer can also install an APK file directly to a device (that is, not via download from the network) from a desktop computer, using a communication program such as adb, or from within a file manager app in a process known as sideloading. The installation of APK files downloaded outside the Google Play is disabled by default. Users can install unknown APK files by enabling "Unknown sources" from "Accounts and Security" in Settings.

App Inventor for Android

App Inventor for Android is an open-source web application originally provided by Google, and now maintained by the Massachusetts Institute of Technology (MIT).

It allows newcomers to computer programming to create software applications for the Android operating system (OS). It uses a graphical interface, very similar to Scratch and the StarLogo TNG user interface, which allows users to drag-and-drop visual objects to create an application that can run on Android devices. In creating App Inventor, Google drew upon significant prior research in educational computing, as well as work done within Google on online development environments.App Inventor and the projects on which it is based are informed by constructionist learning theories, which emphasizes that programming can be a vehicle for engaging powerful ideas through active learning. As such, it is part of an ongoing movement in computers and education that began with the work of Seymour Papert and the MIT Logo Group in the 1960s and has also manifested itself with Mitchel Resnick's work on Lego Mindstorms and StarLogo.App Inventor also supports the use of cloud data via an experimental FirebaseDB component.

Dalvik (software)

Dalvik is a discontinued process virtual machine (VM) in Google's Android operating system that executes applications written for Android. (Dalvik bytecode format is still used as a distribution format, but no longer at runtime in newer Android versions.) Dalvik was an integral part of the Android software stack in the (now unsupported) Android versions 4.4 "KitKat" and earlier, which were commonly used on mobile devices such as mobile phones and tablet computers, and more in some devices such as smart TVs and wearables. Dalvik is open-source software, originally written by Dan Bornstein, who named it after the fishing village of Dalvík in Eyjafjörður, Iceland.Programs for Android are commonly written in Java and compiled to bytecode for the Java virtual machine, which is then translated to Dalvik bytecode and stored in .dex (Dalvik EXecutable) and .odex (Optimized Dalvik EXecutable) files; related terms odex and de-odex are associated with respective bytecode conversions. The compact Dalvik Executable format is designed for systems that are constrained in terms of memory and processor speed.

The successor of Dalvik is Android Runtime (ART), which uses the same bytecode and .dex files (but not .odex files), with the succession aiming at performance improvements transparent to the end users. The new runtime environment was included for the first time in Android 4.4 "KitKat" as a technology preview, and replaced Dalvik entirely in later versions; Android 5.0 "Lollipop" is the first version in which ART is the only included runtime.

Google Cloud Messaging

Google Cloud Messaging (GCM) is a mobile notification service developed by Google that enables third-party application developers to send notification data or information from developer-run servers to applications that target the Google Android Operating System, as well as applications or extensions developed for the Google Chrome internet browser. It is available to developers free of charge. The GCM Service was first announced in June 2012 as a successor to Google's now-defunct Android Cloud to Device Messaging (C2DM) service, citing improvements to authentication and delivery, new API endpoints and messaging parameters, and the removal of limitations on API send-rates and message sizes. It has been superseded by Google's Firebase Cloud Messaging (FCM).

Google Play

Google Play (previously Android Market) is a digital distribution service operated and developed by Google LLC. It serves as the official app store for the Android operating system, allowing users to browse and download applications developed with the Android software development kit (SDK) and published through Google. Google Play also serves as a digital media store, offering music, books, movies, and television programs. It previously offered Google hardware devices for purchase until the introduction of a separate online hardware retailer, Google Store, on March 11, 2015, and it also offered news publications and magazines before the revamp of Google News in May 15, 2018.

Applications are available through Google Play either free of charge or at a cost. They can be downloaded directly on an Android device through the Play Store mobile app or by deploying the application to a device from the Google Play website. Applications exploiting hardware capabilities of a device can be targeted to users of devices with specific hardware components, such as a motion sensor (for motion-dependent games) or a front-facing camera (for online video calling). The Google Play store had over 82 billion app downloads in 2016 and has reached over 3.5 million apps published in 2017. It has been the subject of multiple issues concerning security, in which malicious software has been approved and uploaded to the store and downloaded by users, with varying degrees of severity.

Google Play was launched on March 6, 2012, bringing together the Android Market, Google Music, and the Google eBookstore under one brand, marking a shift in Google's digital distribution strategy. The services included in the Google Play are Google Play Books, Google Play Games, Google Play Movies & TV, Google Play Music. Following their re-branding, Google has gradually expanded the geographical support for each of the services.

H1droid

The H1droid project started when Vodafone sold Samsung H1 mobile phones running on LiMo operating system. Mobile phones running with the LiMO operating system were so few that only a few applications were also available. With this limitation, Samsung H1 owners wanted to run the phone with the more famous Android operating system since the phone itself had good hardware attributes. LiMo operating system also shared other characteristics as Android which could be a good platform for operating system transformation. With this idea, a group of software enthusiast shared ideas on blogsites from all over the world and developed the H1droid and distributed it on the Internet. The software is still on the development stage with a few bugs and it is ongoing.

IOS SDK

The iOS SDK (Software Development Kit) (formerly iPhone SDK) is a software development kit developed by Apple Inc. The kit allows for the development of mobile apps on Apple's iOS operating system.

While originally developing iPhone prior to its unveiling in 2007, Apple's then-CEO Steve Jobs did not intend to let third-party developers build native apps for iOS, instead directing them to make web applications for the Safari web browser. However, backlash from developers prompted the company to reconsider, with Jobs announcing in October 2007 that Apple would have a software development kit available for developers by February 2008. The SDK was released on March 6, 2008.

The SDK is a free download for users of Mac personal computers. It is not available for Microsoft Windows PCs. The SDK contains sets giving developers access to various functions and services of iOS devices, such as hardware and software attributes. It also contains an iPhone simulator to mimic the look and feel of the device on the computer while developing. New versions of the SDK accompany new versions of iOS. In order to test applications, get technical support, and distribute apps through App Store, developers are required to subscribe to the Apple Developer Program.

Combined with Xcode, the iOS SDK helps developers write iOS apps using officially supported programming languages, including Swift and Objective-C. Other companies have also created tools that allow for the development of native iOS apps using their respective programming languages.

Index of Android OS articles

A list of Android (operating system)-related topics

List of Android app stores

The functionality of mobile devices running the Android operating system, the most used mobile operating system globally, can be extended using "apps" – specialized software designed to offer users the means to use their devices for certain additional purposes. Such apps are compiled in the Android-native APK file format which allows easy redistribution of apps to end-users.

Most apps are distributed through Google's Play Store but many alternative software repositories, or app stores, exist. Alternative app stores use the "Unknown Sources" option of Android devices to install APK files directly via the Android Package Manager.

List of features in Android

This is a list of features in the Android operating system.

Microbridge

Microbridge is a software stack that allows for communication between an Android mobile phone and an Arduino micro controller using the Android Debug Bridge (ADB) interface. Unlike the official Android Open Accessory Development Kit (ADK), which is a complete software stack on the Android operating system (versions 3.0 and greater), Microbridge works by creating a TCP server on the phone, using the ADB protocol, on a given port, which the Arduino communicates to the phone using. The protocol allows for bi-directional communication between the Android mobile phone and the Arduino. Microbridge requires an Arduino USB Host Shield to properly function.

Using Microbridge with an Arduino and Arduino USB Host Shield allows for actuation of servos, DC motors, and allows for PWM communication, among other uses, through and Android phone.

Outline of Google

The following outline is provided as an overview of and topical guide to Google:

Google – American multinational technology company specializing in Internet-related services and products that include online advertising technologies, search, cloud computing, software, and hardware.

Qt (software)

Qt (pronounced "cute") is a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed. Qt is currently being developed by The Qt Company, a publicly listed company, and the Qt Project under open-source governance, involving individual developers and organizations working to advance Qt. Qt is available under both commercial licenses and open source GPL 2.0, GPL 3.0, and LGPL 3.0 licenses.

SlickEdit

SlickEdit, previously known as Visual SlickEdit, is a cross-platform commercial source code editor, text editor, code editor and Integrated Development Environment developed by SlickEdit, Inc. SlickEdit supports Integrated Debuggers for GNU C/C++, Java, WinDbg, Clang C/C++ LLDB, Groovy, Google Go, Python, Perl, Ruby, PHP, Xcode, and Android JVM/NDK. SlickEdit includes such features as built in beautifiers that can beautify code as you type, code navigation, context tagging (also known as Intelligent code completion), symbol references, third party tool integration, DiffZilla (a file differencing tool), syntax highlighting, and over 13 keyboard emulations.

In 2014 SlickEdit released a SlickEdit Standard version of their product and renamed their original product SlickEdit Pro.

Software development
Category Category
Releases
Derivatives
Smartphones,
tablets
Customized
variants
Applications
APIs
Alternative
user interfaces
Lists
Related topics
Linux
kernel
XNU
QNX
Windows
Zircon
Other
Overview
Advertising
Communication
Software
Platforms
Hardware
Development
tools
Publishing
Search
(timeline)
Events
People
Other
Related
Linux kernel
Controversies
Distributions
Organizations
Adoption
Media

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.