После установки некоторых android
приложений я обнаружил, что на смартфоне он изменится на odex
файл (не apk
). Как это бывает? Кто может меня научить, мне это очень интересно.
источник
После установки некоторых android
приложений я обнаружил, что на смартфоне он изменится на odex
файл (не apk
). Как это бывает? Кто может меня научить, мне это очень интересно.
Статья в блоге в основном правильная, но не полная. Чтобы иметь полное представление о том, что делает файл odex, вы должны немного понять, как работают файлы приложений (APK).
Приложения в основном представляют собой прославленные ZIP-архивы. Код Java хранится в файле с именем classes.dex, и этот файл анализируется JVM Dalvik, а кэш обработанного файла classes.dex хранится в кэше Dalvik телефона.
Odex - это, по сути, предварительно обработанная версия файла classes.dex приложения, готовая к выполнению для Dalvik. Когда приложение odexed, класс classes.dex удаляется из архива APK и ничего не записывает в кеш Dalvik. Неодексированное приложение получает две копии файла classes.dex - упакованную в APK и обработанную в кэше Dalvik. Также требуется немного больше времени для запуска в первый раз, поскольку Dalvik должен извлечь и обработать файл classes.dex.
Если вы создаете собственное ПЗУ, неплохо было бы разместить как JAR-файлы фреймворка, так и стандартные приложения, чтобы максимально увеличить внутреннее пространство для хранения приложений, установленных пользователем. Если вы хотите тему, то просто deodex -> примените вашу тему -> reodex -> отпустите.
Чтобы собственно деодексировать, используйте small и baksmali:
В этой статье блога объясняется внутреннее устройство файлов ODEX:
источник
APKs contain certain .odex files
?!ИЗОБРАЗИТЕЛЬНОЕ ИСКУССТВО
Согласно документам: http://web.archive.org/web/20170909233829/https://source.android.com/devices/tech/dalvik/ настроить
.odex
файл:Кроме того, они кажутся обычными общими библиотеками, поскольку, если вы получите какое-либо приложение, проверьте:
file /data/app/com.android.appname-*/oat/arm64/base.odex
он говорит:
base.odex: ELF shared object, 64-bit LSB arm64, stripped
и
aarch64-linux-gnu-objdump -d base.odex
вроде работает и дает какую-то осмысленную разборку (но и некоторые мусорные разделы).источник