Estritamente falando, o kernel do Linux fornece pouco mais que uma interface direta para o hardware em que está sendo executado. Há uma pilha inteira de APIs, programas, aplicativos, etc., específicos do telefone Android, dos quais os aplicativos Android dependem. Além disso, o Android não é executado em um kernel genérico do Linux, mas é executado em um que foi altamente personalizado pelo Google com o objetivo específico de executar o SO.
Mesmo que seja tecnicamente possível reproduzir toda a pilha necessária para que os aplicativos Android sejam executados em outro sistema, ela seria inchada e extremamente ineficiente.
O tamanho da tela é limitado, o conceito de "sistema de janelas" não existe em um dispositivo móvel
Alguns dos hardwares simplesmente não estão lá, cartão SIM, GPS, etc
Há um emulador que engana os aplicativos, fornecendo-lhes os bits extras de que precisam. Mas ele usa o OpenJDK nativo em sua máquina para que eles funcionem bem. Pense nisso como um ambiente de teste e não um emulador.