как андроид хранит и запускает программы - PullRequest
7 голосов
/ 22 марта 2012

Android хранит свои программы в формате APK, который является модифицированной версией ZIP / JAR.

Когда эти APK-файлы установлены, они сохраняются в /system/app/$APKNAME.apk.

.

Некоторые из приложений в этом каталоге также имеют файл $ APKNAME.obex.

Эти файлы APK содержат некоторые из следующих

META-INF
    MANIFEST.MF
    CERT.RSA
    CERT.SF
SHA1-Digest
res
AndroidManifest.xml
classes.dex
resources.arsc

Итак, я хочу знать, что это за файлы .obex и программы андроидов распакованы из APK / ZIP / JAR во время выполнения и как?

1 Ответ

2 голосов
/ 22 марта 2012

Способ, которым это работает, довольно интересен и дает некоторые ключевые сведения о модели времени выполнения Android.Первое, что я бы порекомендовал посмотреть - это Внутренние компоненты Dalvik VM , если вы планируете делать какие-то серьезные системные вещи с Android.(Хотя, очевидно, он старый.) Теперь, когда менеджер пакетов Android получает намерение, требующее запуска нового приложения, он разветвляет новую виртуальную машину из уже запущенного процесса zygote .Это в основном методика, которая позволяет системе получить много хороших свойств памяти (совместное использование отображаемых страниц и т. Д.).Затем система загружает (потенциально предварительно оптимизированный и проверенный) файл для загрузки, чтобы vm мог начать его выполнение.Вы должны прочитать этот документ, который расскажет вам немного о том, как это работает.(Возможно, этот поток также поможет.) Имейте в виду, что, поскольку все системы разные, например, если вы работаете на новой архитектуре, вы не получите поддержку JIT, если не напишите ее явно.!- вы не можете точно знать , как Dalvik будет загружать код для запуска вашего приложения.

...