Мой вопрос следующий: не так давно я перемещал apk, данные и файлы . dex
файлы в каталоги / data, и они не показывали приложения, которые я установил вручную, если не до тех пор, пока я не перезагрузил устройство и не появилось сообщение «оптимизировать систему» с того момента, как мне стало любопытно.
Моя цель — узнать, что происходит в этом процессе, и узнать, как повторить это вручную.
Если вы что-то знаете об этом, буду рад вашим комментариям и ответам.
Что делает Android, когда говорит «оптимизация приложений/системы»?
По сути, система Android будет создавать оптимизированную версию каждого приложения. Этот процесс ускоряет запуск каждого приложения в новой версии Android.
Несмотря на то, что написано «оптимизация», операционная система создает файлы «odex» для ваших приложений с нуля. В качестве простого объяснения, файлы odex могут помочь системе загружаться быстрее и сократить время, необходимое для запуска приложений.
Файлы Apk и файлы odex
Более длинная история заключается в том, что когда файл APK добавляется в вашу систему Android, на самом деле он не сохраняется таким образом. Он преобразуется в нечто, называемое файлом «odex».
ОС Android не хранит приложения в том виде, в каком они есть после установки (т. е. в виде одного APK-файла). Оптимизированная версия приложения хранится в кеше Dalvik — так называемом odex
файле».
Что такое файл Odex?
В файловой системе Android приложения поставляются в виде пакетов с расширением .apk. Эти пакеты приложений или APK содержат определенные .odex
(оптимизированные исполняемые файлы Dalvik) файлы, предполагаемая функция которых заключается в экономии места. Эти odex
файлы на самом деле представляют собой наборы частей приложения, которые оптимизируются перед загрузкой. Это ускоряет процесс загрузки, поскольку предварительно загружает часть приложения. С другой стороны, это также затрудняет взлом этих приложений, потому что часть кода уже была извлечена в другое место перед выполнением.
Деодекс
Деодексация — это, по сути, переупаковка этих APK определенным образом, так что они снова собираются в classes.dex
файлы (Dalvik EXecutable).
При этом все части пакета приложения снова собираются в одном месте, что избавляет от беспокойства о том, что модифицированный APK конфликтует с некоторыми отдельными одексированными частями.
Таким образом, в деодексированных ПЗУ (или APK) все пакеты приложений собраны в одном месте, что позволяет легко модифицировать их, например, создавать темы. Поскольку никакие фрагменты кода не поступают из какого-либо внешнего источника, пользовательские ПЗУ или APK всегда деодексируются для обеспечения целостности.
Есть несколько объяснений того, как это работает:
В Android приложения поставляются в виде пакетов с расширением .apk. Эти пакеты приложений или APK содержат определенные
.odex
файлы, предполагаемая функция которых заключается в экономии места. Эти файлы «odex» на самом деле представляют собой наборы частей приложения, которые оптимизируются перед загрузкой. Это ускоряет процесс загрузки, поскольку предварительно загружает часть приложения.ОС Android использует виртуальную машину на основе Java для запуска приложений, называемую виртуальной машиной Dalvik. Деодексированный или
.dex
файл содержит кеш, используемый этой виртуальной машиной (называемый Dalvik-кэшем) для программы, и он хранится внутри APK. Файл.odex
, с другой стороны, представляет собой оптимизированную версию того же файла .dex, который хранится рядом с APK, а не внутри него. Android по умолчанию применяет эту технику ко всем системным приложениям. Теперь, когда система на базе Android загружается, кэш давлика для ВМ давлика строится с использованием этих.odex
файлов, что позволяет ОС заранее узнать, какие приложения будут загружены, и, таким образом, ускоряет процесс загрузки. Деодексируя эти APK, разработчик фактически помещает файлы .odex обратно в соответствующие пакеты APK. Поскольку весь код теперь содержится в самом APK, становится возможным модифицировать любой пакет приложения, не конфликтуя со средой выполнения операционной системы.
Как сделать процесс вручную;
Если вы хотите вручную оптимизировать свои APK-файлы, есть несколько вариантов:
Благодарности
.dex
он не будет «встроен» в виртуальную машину dalvik, как описано выше, и этот процесс происходит во время загрузки, поэтому вам необходимо перезагрузить компьютер после перемещения файла dex, чтобы он сначала был оптимизирован в кеше, а связанные части перемещены в соответствующие места. .
iBug
iBug
/data/dalvik-cache/
имеют расширение.dex
, потому что их фактический форматodex
отличается от того, что вы извлекаете из APK.