In this series of articles, I will talk about the internal structure of Android - about the boot process, about the contents of the file system, about Binder and Android Runtime, about what applications consist of, how they are installed, launched, work and interact with each other, about the Android Framework, and about how security is ensured in Android.
Articles in the series:
- How Android works, part 1
- How Android works, part 2
- How Android works, part 3
- How Android works, part 4
- …
History of appearance
Today there are many devices that run on the Android platform. This operating system is designed for smartphones and tablets, watches and e-readers, game consoles and even Google glasses . Perhaps TVs and cars with Android support will appear soon.
The history of the creation of the OS began back in 2003. At that time, a small organization called Android inc was founded. Its founders were Rich Miner, Chris White, Andy Rubin and Nick Sears. Even then, some developments were underway that were planned to be implemented in the new operating system. The company carried out its activities in the strictest secrecy.
Soon the organization ran out of money, and there were no significant achievements in OS development. Due to the lack of results, investors could not be attracted. After a while, Google became interested in the development. In 2005, the company became the property of the search giant.
After this, the Open Handset Alliance Corporation was founded. It includes leading manufacturers of mobile devices. The Android platform was first introduced in 2007. As you know, it is based on the Linux kernel. The first version of this operating system was released in 2008.
Android is Linux
There has been a lot of controversy over this formulation, so let me clarify exactly what I mean by this phrase: Android is based on the Linux kernel, but is significantly different from most other Linux systems.
Among the original Android development team was Robert Love, one of the most famous developers of the Linux kernel, and even today Google remains one of the most active contributors to the kernel, so it is not surprising that Android is built on top of Linux.
Like other Linux systems, the Linux kernel provides low-level things like memory management, data protection, multiprocessing and multithreading support. But - with a few exceptions - you will not find other familiar components of GNU/Linux systems in Android: there is nothing from the GNU project, it does not use X.Org, or even systemd. All these components have been replaced by analogues that are more suitable for use in conditions of limited memory, low processor speed and minimal power consumption - thus, Android is more like an embedded Linux system than GNU/Linux.
Another reason that Android does not use GNU software is the well-known “no GPL in userspace” policy:
We are sometimes asked why Apache Software License 2.0 is the preferred license for Android.
For userspace (that is, non-kernel) software, we do in fact prefer ASL 2.0 (and similar licenses like BSD, MIT, etc.) over other licenses such as LGPL. Android is about freedom and choice. The purpose of Android is to promote openness in the mobile world, and we don't believe it's possible to predict or dictate all the uses to which people will want to put our software. So, while we encourage everyone to make devices that are open and modifiable, we don't believe it is our place to force them to do so. Using LGPL libraries would often force them to do just that.
The Linux kernel itself in Android is also slightly modified: several small components have been added, including ashmem (anonymous shared memory), Binder driver (part of the large and important Binder framework, which I will talk about below), wakelocks (sleep mode control) and low memory killer. Initially, they were patches to the kernel, but their code was quickly added back to the upstream kernel. However, you won't find them in "regular Linux": most other distributions disable these components when building.
Android uses not the GNU C library (glibc) as a libc (standard library of the C language), but its own minimalistic implementation called bionic, optimized for embedded systems - it is much faster, smaller and less memory-intensive than glibc. which has acquired many layers of compatibility.
Android has a command line shell and many standard commands/programs for Unix-like systems. In embedded systems, this is usually done using the Busybox package, which implements the functionality of many commands in a single executable file; Android uses its analogue called Toybox. As with "regular" Linux distributions (and unlike embedded systems), the primary way to interact with the system is through a graphical interface rather than the command line. However, “getting” to the command line is very simple - just launch a terminal emulator application. It is usually not installed by default, but it is easy, for example, to download from the Play Store (Terminal Emulator for Android, Material Terminal, Termux). Many "advanced" Android distributions - such as LineageOS (formerly CyanogenMod) - have a terminal emulator pre-installed.
The second option is to connect to your Android device from your computer via Android Debug Bridge (adb). This is very similar to connecting via SSH:
[email protected] $ adb shell android $ uname Linux
Other familiar components in Android include the FreeType library (for displaying text), the OpenGL ES, EGL and Vulkan graphics APIs, as well as the lightweight SQLite DBMS.
In addition, the WebKit browser engine was previously used to implement WebView, but starting with version 7.0, the installed Chrome application is used instead (or another; the list of applications that are allowed to act as a WebView provider is configured at the compilation stage of the system). Internally, Chrome also uses the WebKit-based Blink engine, but unlike the system library, Chrome is updated through the Play Store - thus, all applications that use WebView automatically receive the latest improvements and vulnerability fixes.
What it is
Android is the operating system that powers smartphones, tablets, and many other devices. Thanks to this OS, even the most inexpensive phone will be able to gain new capabilities. The system will allow you to install various useful programs on your device that will help you make full use of all the functions of the device.
All necessary software can be downloaded from the Play Market. This site contains more than 700 thousand programs. A wide range will allow you to find any application you need. Using the operating system, you can easily access the Internet, watch video files, communicate on social networks, listen to music, take photos and immediately post them to your account or read e-books.
It is worth noting that the OS is completely free. Moreover, it is very easy to use. It won't take much time to understand the interface. Thanks to all its advantages, it has become the most widespread in the world. In 2014, more than 86% of devices operating on this platform were sold.
Software
There are many games and programs, and Android applications on Android OS. What is this? These are programs in bytecode (that is, in a kind of set of instructions) for a virtual machine that installs and runs them.
For games and programs on Android, a corresponding .APK installation package was provided. Many libraries are available for writing applications on devices with such an operating system: SSL, Bionic, OpenGL ES and various multimedia files. Program development can even be done in Java, but not lower than version 1.5. In fact, to create them you do not need to have any additional devices other than the Android device itself. Although many craftsmen can develop applications using an emulator.
OS application
Since the advent of the Android operating system to the present day, developers have not been sitting idly by. The platform is constantly being improved. At the same time, its functionality is expanded by introducing new features.
The platform has become so popular and comfortable to use that many companies that develop modern gadgets have decided to release their devices based on this OS.
Using Android is not as difficult as it seems. With its help, you can perform almost the same actions on your device as on your computer.
The system provides several standard applications. Among them are:
- browser;
- Email;
- calendar;
- voice search;
- social network;
- navigator;
- weather;
- news.
All applications from Google.
Another nice plus is the ability to customize your desktop yourself. You can add an additional screen to your device where you can place shortcuts or widgets. You can also install any theme or wallpaper you like, thereby modifying the interface.
It's all about apps
As you can easily see, using Android is fundamentally different from using “regular Linux” - you don’t need to open and close applications, you simply switch between them, as if all applications were always running. Indeed, one of the unique features of Android is that applications do not directly control the process in which they are running. Let's talk about this in more detail.
The basic unit in Unix-like systems is the process. Low-level system services, individual commands in the shell, and graphical applications are processes. In most cases, a process is a black box to the rest of the system—other system components don't know or care about its state. The process begins executing by calling the main() function (actually _start), and then implements some of its own logic, interacting with the rest of the system through system calls and simple interprocess communication (IPC).
Since Android is also Unix-like, all this is true for it, but while the lower-level parts - at the Unix level - operate on the concept of a process, at the higher level - the Android Framework level - the basic unit is the application. An application is not a black box: it consists of individual components that are well known to the rest of the system.
Android applications do not have a main() function, nor do they have a single entry point. In general, Android abstracts as much as possible the concept of an application being launched from both the user and the developer. Of course, the application process needs to be started and stopped, but Android does this automatically (I'll talk more about this in future articles). The developer is asked to implement several separate components, each of which has its own life cycle.
In Android, however, we explicitly decided we were not going to have a main() function, because we needed to give the platform more control over how an app runs. In particular, we wanted to build a system where the user never needed to think about starting and stopping apps, but rather the system took care of this for them… so the system had to have some more information about what is going on inside of each app, and be able to launch apps in various well-defined ways whenever it is needed even if it currently isn't running.
To implement such a system, applications need to be able to communicate with each other and with system services - in other words, a very advanced and fast IPC mechanism is needed.
This mechanism is Binder.
Why is it good
This OS has a number of advantages. The main ones are:
- ease of use – the system is equipped with a QWERTY keyboard, which is comfortable and familiar to use, and you can choose any other among free and paid applications;
- the speed of the device - the gadget instantly responds to commands and completes the assigned tasks without freezing or other troubles;
- a huge range of applications and games - most of them are free, in addition, access to all Google products is open;
- there is no prohibition on installing various applications and add-ons;
- there is no need to install additional programs to access the device’s memory - to do this you need to connect to your computer using USB.
init.rc Commands
The init process has a built-in set of commands, many of which follow the standard Linux command set. The most notable of them:
- exec /path/to/command - run an external command;
- ifup interface - raise the network interface;
- class_start class_name - start services related to the specified class;
- class_stop class_name - stop services;
- insmod /path/to/module - load kernel module;
- mount FS device directory - mount the file system;
- setprop name value - set a system variable;
- start service_name - start the specified service;
- trigger name - enable the trigger (execute the specified block of commands);
- write /path/to/file line - write a line to a file.
Competitors
The main competitors with which the Android platform has to fight for the palm are:
- Apple iPhoneOS;
- Microsoft Windows Mobile;
- RIM BlackBerry OS;
- Maemo/MeeGo;
- Samsung Bada OS;
- Palm webOS;
- Symbian OS.
Today, Android has become the most widespread mobile platform in the world than iOS. However, a presentation of the new Ubuntu Phone OS is planned soon. Perhaps it will become another serious competitor to Android.
Google legal scandals
On August 12, 2010, Oracle sued Google for allegedly violating copyrights and patents related to the Java programming language. Oracle initially sought $6.1 billion in damages, but this estimate was rejected by a United States federal judge who asked Oracle to reconsider their claim.
Not everything is always good.
Naturally, Google said that Android did not violate Oracle's patents or copyrights, adding that those patents were invalid, and also provided several other arguments in its defense. In May 2012, a jury said that Google did not infringe Oracle's patents, and a judge ruled that the Java API structure used by Google was not copyrightable.
But the story didn't end there... On May 9, 2014, the Federal Circuit partially reversed the district court's ruling and ruled in Oracle's favor on the copyright issue. In December 2015, Google announced that the next major release of Android, which was supposed to be Android Nougat, would switch to OpenJDK, which is the official open-source implementation of the Java platform.
Apple showed that it does not value Android smartphones
In its statement, Google claimed that this was part of an effort to create a "common code base" between Java on Android and other platforms, but the giant later admitted that it was part of an effort to resolve disputes with Oracle. Ultimately, in June 2021, a United States federal court ruled in favor of Google, declaring that its use of the API was fair.
Google also had its share of lawsuits.
Of course, there were other lawsuits, but they were not as large, did not have as much publicity, or did not contain as many details. You can recall the scandals of partners like the dispute between Apple and Samsung, but they have more to do with the partners, and not with Google itself.
Among the legal problems in Russia, we can recall how the Federal Antimonopoly Service fined Google following a trial regarding pre-installed software. According to the department, it violated antitrust laws and prevented third-party services from developing normally. The proceedings were initiated by Yandex.
Why Google CEO is embarrassed to talk about Google Pixel smartphones
Android devices
In 2008, the first device was released that ran on Android. The device was developed by HTC. It was a smartphone called HTC Dream. After this, several more phone manufacturers expressed a desire to produce mobile devices that support this operating system.
Soon a tablet based on the Android platform was announced. In 2009, a photo frame running on this OS appeared on the market. In addition, after 2 years, the Blue Sky organization developed a new wristwatch, which was called i'm Watch. They also support this system.
Camera manufacturers also decided to keep up and introduced the first camera in the world that runs on Android. The new product was released by Nikon. In addition, game consoles, e-books and media players operate on this platform. It is expected that some more devices will appear soon.
At this rate of development, the Android platform will become the absolute leader among other operating systems, leaving all competitors behind.
Thanks to a well-designed interface, easy use and reliable data protection, devices running this OS are certainly worthy of attention.
Operating system: concept and types
The most popular operating systems for computers are Windows, macOS and Linux. But this article will talk about the filling for mobile devices. As for phones and tablets, their operating system is a kind of hybrid of PC OS functionality with options for pocket devices (camera, Bluetooth, NFC, and so on).
So, an operating system is understood as a set of programs that manage device resources and provide user interaction. Operating systems differ from each other in many ways: interface type, multitasking, functionality, etc. Currently, the most popular OS among mobile devices are Windows 10 Mobile, Android and iOS.