I know about projects like archon, and various emulators exist, but it seems strange that I can run windows programs but not android programs under a stock linux kernel.
closed as too broad by MelBurslan, Anthon, Archemar, jimmij, cuonglm Mar 27 '16 at 12:05
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
There are a number of kernel features that are unique to Android. You can see a list here. The big one appears to be binder. In order to get an Android "distribution" running under Linux, your kernel first needs to be implementing a number of those features.
Actually integrating with a Linux desktop is harder still.
The graphics subsystem isn't compatible with X11, so there's no way to draw an Android app to a standard Linux desktop.
Strictly speaking, the Linux kernel provides little more than a direct interface to the hardware it is running on. There is an entire stack of additional Android-phone-specific APIs, programs, applications, etc. on which Android applications depend. Additionally, Android does not run on a generic Linux kernel, but instead runs on one that has been highly customized by Google with the specific purpose of running their OS.
Even if it is technically possible to reproduce the entire stack required for Android applications to run on another system, it would be bloated and extremely inefficient. Screen size is limited, the concept of a "Windowing System" does not exist in a mobile Some of the hardware simply isn't there, SIM card, GPS, etc
There's an emulator that fools the apps by giving them those extra bits they need. But it uses the native OpenJDK on your machine so they will run well. Think of it like a test environment and not an emulator.