2015-11-19 5 views
4

во время игры с Android ART и «родным» кодовым файлом .oat/.elf, который был создан в процессе установки приложения, я заметил что-то странное.Android ART - использование файла .oat в/dalvik-cache /?

Для моего понимания, если устройство использует ART (Android> = 5.0), приложение начнется с скомпилированного файла овса (/ data/dalvik-cache/arm64 /).

Вот почему я был удивлен при проверке использованных fd приложений и не нашел там файла. Здесь указан только обычный apk (/data/app//base.apk).

Проверить этот вывод из моих "LS -l/Proc/PID/Fd"

enter image description here

Так что я подумал, может быть это просто нет в списке есть. Поэтому я сам обменял овский файл этого приложения, скомпилировав другой класс.dex с помощью инструмента dex2oat.

Так что даже после изменения файла приложение запускается нормально, без каких-либо странных сообщений или ошибок (также в logcat).

Какое объяснение? Что такое подробный процесс, который делает Android при запуске приложения под ART?

Я надеюсь, что кто-то может очистить это для меня. Большое спасибо.

+0

вам может видеть, что base.odex отображается в память, если вы печатаете вывод файла 'maps'! – Paschalis

ответ

3

на основе @Paschalis комментарий, я исследовал здесь, и файл овсяная действительно памяти отображается на Android 5.0 устройства (эмулятор):

a6af4000-a6af9000 r--p 00000000 1f:01 7366 /data/dalvik-cache/x86/[email protected]@[email protected]@classes.dex

Проверка через:

cat /proc/<PID>/maps | grep dex

К сожалению, это больше не относится к устройствам Android 6.0 (Nexus 5 & arm-Emulator).

вскрышной файл находится в папке /data/app/<APP>/oat/<ARCHITECTURE>/ как «base.odex`

/data/app/app.app.works-1/oat/arm/base.odex

Я до сих пор не нашел правильную ссылку на это, он основан на экспериментах и ​​наблюдениях

+0

спасибо, хороший, у меня такие же проблемы с .odex-файлом, когда я загрузил apk после этого, я получил журнал сбоев в консоли воспроизведения для этих проблем, поэтому, как его решить, –

Смежные вопросы