Runtime is an environment in which programs written in a specific language run. Android Runtime (ART) is Java-like runtime which runs Dalvik Executable (DEX) bytecode (from apk files) in a Virtual Machine. Like other Runtime Environments ART can run the code in three different modes:
- Interpretation
- Just-in-Time (JIT) compilation
- Ahead of Time (AOT) compilation
In order to improve performance, JIT and AOT compilers translate DEX bytecode (during or before execution respectively) into native machine language. JIT compiler was part of DVM, readded to ART in Android 7. Since then AOT compiler also supports profile-guided background compilation. App profiles are created during JIT compiled executions.
While interpreter is part of ART libraries, dex2oat tool is used as JIT and AOT compiler. Documentation states:
At install time, ART compiles apps using the on-device dex2oat tool. This utility accepts DEX files as input and generates a compiled app executable for the target device.
And here:
JIT and AOT use the same compiler with a similar set of optimizations
On your Marshmallow ROM AOT compilation won't work in the absence of dex2oat which may adversely affect the apps performance. Also the installd native service and PackageManager Java service rely on dex2oat during app installation or profile update of previously installed apps. So they may break due to missing file.
To summarize, installd or dex2oat crashes are serious bugs in your ROM which need to be fixed. Deleting dex2oat binary isn't a solution but a workaround which is very likely to fail.
RELATED:
dexinterpreter or JIT compiler modes. So AOT Compilation isn't necessarily required but may impact the performance. Also the processes (likeinstalld) involved withdex2oatbinary may break if binary is missing e.g. on a new app install or on profile update of previously installed apps. – Irfan Latif May 31 '20 at 22:02