The Android OS was using interp years ago, then they added Just-In-Time (JIT). However, since Android 5.0, they replaced JIT with Ahead-Of-Time (AOT) compilation which increased app installation time quite a bit, so I wasn't following its development. Then in Android 7.0, it seemed JIT had come back, but I cannot understand how JIT and AOT would be able to work together.

Does this mean they finally ditched AOT and switched back to JIT? (I have read some articles but since I have detached myself for a while from the follow ups to development, I am not sure if I still understand everything correctly.

  • 1
    See Android Open Source Project - ART and Dalvik and specifically the execution decision tree in Implementing ART Just-In-Time (JIT) Compiler Additionally the recent Google IO 2018 session on What's New in Android Runtime which provides some more historical info. – Morrison Chang Nov 14 '18 at 21:43
  • @MorrisonChang Hi my understanding is Android N runs compiled code if available (either JIT or AOT), otherwise falling back to JIT? But this means AOT is not really ahead-of-time but a process executed regularly and repeatedly? – Cyker Nov 15 '18 at 14:15
  • 1
    You are correct in thinking that AOT isn't a one and done type of thing. As an app is executed profile information is collected and informs compilation to ARM code during device idle period. The speaker from this video from the 2018 Android Dev Summit Deep Dive into the ART Runtime goes through more detail on the changes to ART leading to the most recent version in Android Pie. – Morrison Chang Nov 16 '18 at 3:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.