Intereting Posts
Использование AsyncTask для запуска активности Разделитель методов студии Android Android Заменить фрагмент в фрагменте Вызов Gradle из .bat приводит к остановке пакетного выполнения Логотип приложения расположен наполовину в ActionBar, а половина – на экране mainActivty Мы можем получить хромированную историю просмотров / закладки в нашем приложении для Android С чего начать с расширенной реальности Сохраняется ли база данных Android SQLite после выключения устройства? Android – SharedPreferences через профили Android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" работает на уровне приложения, но не на уровне активности. Любая подсказка? Откуда берутся подсказки входа в Smart Lock для паролей и как их настроить? Как установить цвет фона в макете xml? Сохранять состояние активности при изменении ориентации андроида Android Studio Execution не удалось выполнить задачу: app: preDexDebug ' Как загрузить изображение на сервере в формате jpg или png в Titanium (Android)?

Android ART – использование файла .oat в / dalvik-cache /?

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

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

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

Проверьте этот вывод моего «ls -l / proc / PID / fd»

Введите описание изображения здесь

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

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

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

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

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

a6af4000-a6af9000 r--p 00000000 1f:01 7366 /data/dalvik-cache/x86/data@app@my.app.works-1@base.apk@classes.dex

Проверьте через:

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

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

Файл odex находится в папке /data/app/<APP>/oat/<ARCHITECTURE>/ as как "base.odex`

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

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