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, зменшуючи таким чином розмір завантаження.
APK завжди підписаний. Це може запобігти зловмисним змінам пакета. Ви точно не хочете встановлювати модифікований додаток, не знаючи, що змінилося, чи ін'єкція вірусу. META-INF/
Усередині APK працює для цієї мети. Неофіційні зміни призведуть до невідповідності підписів, а система Android відмовиться встановлювати модифікований додаток.
Крім того, коли ви оновлюєте ОС Android, всі файли dex знову "оптимізуються", так що вам не потрібно буде повторно встановлювати їх по черзі. Як сказано вище, для оптимізації потрібен classes.dex
файл з оригінального пакета.