

End-users can use e.g. waydro.id to run Android apps on Linux.
I’m not deep into Android development, but I doubt it’s possible to just port an app without basically a complete rewrite. Android has an own layer on top of the JVM, called Zygote, and there’s presumably lots of system libraries which the Android apps implicitly depend on, for handling graphics and whatnot, which make tons of assumptions about running on an Android device.
Well, there’s a separate technology stack for virtualization. So, it would be similar in effect, but the way you get there is different, and it’s possible that it performs better or worse for certain scenarios.