TBH, it has always been surprising to me that this wasn't a default feature in Android. It couldn't be that difficult to add.<p>Then again, they want to support small storage sizes, so maybe discouraging the OS from growing too much with redundant 32 and 64 bit versions of base libraries is the real reason?
Reminds me of libhoudini (ARM -> x86 translation layer) from the days when x86 Android phones were still thing. Performance wasn't amazing but compatibility was surprisingly good.
One thing I'm curious about translators like these: are they smart enough to convert software polyfill functions to hardware instructions? For example, armv7a doesn't have a divide instruction, so a software polyfill function is used (like __aeabi_idiv). Do translators recognize these common software functions and translate them to native instructions (i.e. sdiv in this example)?
I guess Google play store can restrict the downloadable set of apps to what is natively compiled for available hardware.<p>So why this over-the-top feature than?