Android is an operating system developed by Google. It is based on the Linux kernel and best suited for touch-based interaction. Since its initial release for smartphones in 2008, it has also found its place in smart TVs, cars, watches, notebooks, consoles, cameras, and other electronics.
Android's code is released as open-source. There are middlewares, libraries, and APIs written in C, and the applications are primarily written in Java, though version r5 of the Android Native Development Kit also enabled developers to write entire applications in C or C++, which, however, is not advised for most use-cases. A third alternative for writing Android applications is Google's Go programming language (v1.4 and higher). There are also several cross-platform options for writing mobile applications that support Android, one of the most popular ones and recommended by us being React Native.
Due to its open nature, Android has a large community of open-source enthusiasts that create Android-based custom firmware with innumerable variations of customizations and features. Custom firmware and some applications require the Android device to be rooted, i.e. to have exposed root access to the operating system. While this can give applications additional usability, it is still a hack which could lead to bricking the device, losing the warranty, or exposing vulnerabilities to other hacks. It also requires a knowledgeable user to perform it, therefore it is not recommended that product producers count on their users to have a rooted device, unless they target this specific user group.
Android applications are primarily developed in Java, using the Android SDK, which includes practically all the tools a developer might need. Alternative Choices are C/C++, Go, and React Native. Android software can be developed on modern Linux distributions, Mac OS X 10.5.8 or higher, and Windows 7 or higher.
The Android SDK package includes the Android Debug Bridge, which is a versatile command-line tool, which lets the developer communicate with either an emulated or connected Android device. It allows the user to run a variety of actions on the device, ranging from software installations to using the device's Unix shell.
Developing in Java
While Android natively uses Java syntax and semantics, it does not provide the full set of class libraries and APIs of either Java SE or ME. Tools and companies exist which offer Java ME => Android conversion services. Still, Java is the most common development language for the Android platform.
Developing in Go
There are two ways to program for Android in Go.
Libraries can be written in Go, and the gomobile language binding generator can be used to generate bindings for Java and Objective-C, i.e. Android and iOS respectively.
An app can be written entirely in Go. In this case, however, the APIs are limited to those, which are portable between both platforms (Android & iOS).
Developing in React Native
Android is a platform with a global smartphone market share of more than 85%, with 328.6 million shipped Android devices in 2016. Its presence in all sorts of consumer electronics, and even in cars, makes it a platform you simply cannot ignore. Given the many options to turn your plans into reality on the platform, we understand that it can be a hard decision on what approach to use. Therefore, we advise you to contact our Android experts, who will be happy to share their knowledge with you and help you get to the finish line.