Android APK обычно содержит эти вещи.
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex
После установки файл APK копируется /data/app
, classes.dex
извлекается и «оптимизируется» при запуске dex2oat
на нем (на Android 5+ lib/
также извлекается). Результат оптимизации сохраняется, /data/dalvik-cache/
поэтому приложение необходимо оптимизировать только один раз за установку или обновление . Все остальное хранится внутри АПК. Таким образом, первый ответ очень ясно: вещи , как assets
и res
что требуется для реализации , должны быть предусмотрены приложения, и они находятся внутри APK. Файл APK хранится в целях поддержки. Если вы удалите APK, приложение определенно не запустится вообще. (Приложение: где мои активы?)
Во-вторых, в Google Play очень давно добавлена поддержка «Delta Update» . В процедуре дельта-обновления вычисляется разница между старым пакетом и новым пакетом. Затем GP загружает «Delta» и применяет изменения к оригинальному APK, чтобы получить обновленный APK, тем самым уменьшая размер загрузки.
АПК всегда подписан. Это может предотвратить вредоносную модификацию пакета. Вы определенно не хотите устанавливать модифицированное приложение, не зная, что изменилось или был ли внедрен вирус. META-INF/
Внутри APK работает для этой цели. Неофициальные изменения приведут к несоответствию подписи, и система Android откажется от установки модифицированного приложения.
Кроме того, при обновлении ОС Android все файлы dex снова «оптимизируются», поэтому вам не нужно переустанавливать их один за другим. Как сказано выше, для оптимизации требуется classes.dex
файл из оригинального пакета.
lib/
из APK, iOS не извлекла бы все из IPA. Это просто для базовой проверки целостности.