Made in USA by Google in 2008
AndroidOS is optimized for mobile devices but runnable on most anything. It is based on an independent fork of the Linux kernel. The source code of the core components of the OS have so far been made available under the Apache License (which does not required derivative source code to be published and is GPL incompatible) except of course for the kernel of the OS which is GPL. No commercially available device provides a Free Software operating system by default or as an option. Users are free to compile Android OS for their devices if they are willing to forfeit technical support of the device's manufacturer and their cellular provider and willing to give up much of the hardware based feature of the phone.

Most experts consider the and Android Operating System to be a "Linux Distribution" but not a "GNU/Linux Distribution". This is because it uses the Linux Kernel but most of the rest of the system in any given device is made up of required proprietary and required non-GNU components (Compare to a desktop GNU/Linux system that may run as many a 3 optional proprietary drivers, dozens of optional non-GNU softwares, and thousands of GNU componets. Many experts and most users would still call it a GNU/Linux distro when relatively few proprietary componets are added, but not RMS and deadicated Free Software advocates). Proprietary drivers are the main barrier to using GNU/Linux distros on devices designed for Android. Modified versions of GNU/Linux distros will run on most Android systems but many will only be able to access the CPU, GPU (if it is OpenGL ES compliant), memory, and storage reliably. It may not recognise the cellular modem, WiFi, touchscreen, buttons, camera, bluetooth, and other essential hardware. Replicant is one of the more successful replacement distros. But its success is limited to a dozen or so devices. Of course purchasing android devices without having to buy the proprietary and non-GNU is such as obscure process it may as well not be an option.

An option some people are developing is to add a GNU/Linux distribution to their phone while keeping the original AndriodOS distribution fully intact and working. Emulation and virtualization are options. Sharing and data synchronization is fairly safe but perhaps slow. Dual booting is also an option, but lacks any easy and safe ways to share and synchronize data between the two operating systems. A different and very interesting option is running the two operating systems concurrently. Since AndroidOS is essentially running on a Linux kernel, it already has the good ol chroot feature (based on the UNIX feature of the same name). This feature allows a copy of the operating system, or in this case, a second Linux operation system to run within the first. It is essentially a 2nd root user. Configured properly, both distros can share all the systems resources safely. Though this is difficult, as the chroot environment was originally designed to forensically isolate the 2nd root environment. This is using a feature in a completely, even describable as opposite, and unintended way. It is also slow, though not as slow as emulation. Everything the 2nd distro cannot do (WiFi, Cellular, BlueTooth, etc...) can simply be done by the 'master root' (AndroidOS). Many setups forgo giving control of the display and input to the 2nd operating system (which requires control of many more components as well). Instead, they use VNC or some other desktop sharing software to access 2nd OS via network protocols. This is slow, but not as slow as doing so over a physical network. The next step will be to reverse the relationship. Use the GNU/Linux distro as the main OS and install the original AndroidOS as the chroot environment. This will run the GNU/Linux environment at full speed and the AndroidOS will be the slower. An overall speed improvement for both since the AndroidOS will just be running the behind the scenes features anyhow (Not the display and multimedia).

There's other more complicated methods, such as using the Android kernel to chroot run the Debian kernel which is used to shroot run the Debian Distro which is used to run QEMU running a virtual Android OS (Running "The Matrix" version 2.0 from inside "The Matrix" version 1.0 which is virtually accessing "The Matrix" version 2.0 that is it running on). As bizarre as this may seem, this method allows both operating systems to run with no performance issues whatsoever beyond and extra 1.5 seconds from boot to Android usability (full speed after that). File access by both operating systems is seamless and can be done simultaneously. One a user interface level, everything is very seamless. But behind the scenes, the two systems are extremely separate. This means each systems cannot damage the other.

So why would anyone bother to replace their stock AndroidOS with a GNU Linux distro? There's other reasons besides becoming a saint, being 1337, exercising anti-establishment tendencies, or simply running your favorite Linux game wirelessly in your hand anywhere without having to actually port it to Android. It has been proven that various corporations and government agencies have backdoors into Android devices (and other mobile devices). So far, it would seem, all attempts to gain access to GNU/Linux systems have been discovered an disabled (is it any wonder why these same agencies and their employees compile their own versions of Android for their own devices and use Linux everywhere else).

self-running-Matrix method for Debian based distros (including Ubuntu)
chroot-VNC method. Several Play Store apps use this method.

Most applications on Android are written in Java language (with help of Android specific Java libraries). But it is possible to write native code for the devices as well, though this of course is at the cost of compatibility with numerous devices.