Android ships with it's own init system that does a lot more than just starting/stopping services. And integrating those services manually into regular Linux desktop's init system would have been painful to say the least.
That's the reason Anbox runs the whole Android subsystem in it's own LXC container - to avoid having to patch the Android init system and various system libraries to load Android libraries from non AOSP paths. (Like /system/ , /vendor etc..)
From what i remember, The original Anbox used patched version of Android frameworks, that sent the application render data to the Anbox session manager running outside the container [1] , which then created the application windows and rendered it there. This was okay on desktop systems, but on mobile phones (Sailfish OS, Ubports devices) that were trying to use Anbox to provide app compatibility, this had a significant amount of overhead, that made it unusable.
Back then there was the sfdroid project, that tried to patch the Android frameworks running inside Anbox Container to directly create Wayland windows and render the applications directly (kind of like how Chrome OS used to do), instead of having the Anbox session manager do it [2,3], bringing back most of the lost performance.
From the looks of it, Waydroid seems to be doing something similar [4]
1. https://github.com/anbox/anbox/blob/master/docs/architecture... 2. https://github.com/sfdroid/anbox/ 3. https://www.youtube.com/watch?v=78N1C2-6t3I 4. https://github.com/waydroid/android_hardware_waydroid/blob/l...