играя с Android ART и «родным» файлом кода .oat/.elf, который создается в процессе установки приложения, я заметил кое-что странное.
Насколько я понимаю, если устройство использует ART (Android >= 5.0), приложение запустится с скомпилированным файлом oat (/data/dalvik-cache/arm64/).
Вот почему я был немного удивлен, когда проверял используемые fd приложения и не нашел там файла. Там указан только обычный apk (/data/app//base.apk).
Проверьте этот вывод моего "ls -l /proc/PID/fd"
Вот я и подумал, может быть, его просто нет в списке. Поэтому я самостоятельно заменил файл oat этого приложения, скомпилировав другой class.dex с помощью инструмента dex2oat.
Таким образом, даже после изменения файла приложение запускается нормально, без каких-либо странных сообщений или ошибок (также в logcat).
Чем это объясняется? Каков подробный процесс Android при запуске приложения в ART?
Я надеюсь, что кто-то может прояснить это для меня. Большое спасибо.
maps
! - person Paschalis   schedule 01.12.2015