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. Commented Nov 14, 2018 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
    Commented Nov 15, 2018 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. Commented Nov 16, 2018 at 3:28


You must log in to answer this question.

Browse other questions tagged .