Ein Android APK enthält normalerweise diese Dinge.
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex
Bei der Installation wird die APK-Datei kopiert /data/app
und classes.dex
durch Ausführen extrahiert und "optimiert" dex2oat
(auch auf Android 5+ lib/
wird extrahiert). Das Ergebnis der Optimierung wird in gespeichert, /data/dalvik-cache/
sodass eine App nur einmal pro Installation oder Update optimiert werden muss . Alles andere wird in der APK aufbewahrt. Die erste Antwort ist also sehr klar: Dinge wie assets
und res
die, die von der App benötigt werden, müssen bereitgestellt werden und sie befinden sich in der APK. Die APK-Datei wird zu Unterstützungszwecken aufbewahrt. Wenn Sie eine APK löschen, wird die App auf keinen Fall gestartet. (App: Wo ist mein Vermögen?)
Zweitens Google Play Unterstützung für „Delta Update“ sehr lange her . Bei der Delta-Aktualisierung wird die Differenz zwischen dem alten und dem neuen Paket berechnet. Dann lädt GP das "Delta" herunter und wendet Änderungen an der ursprünglichen APK an, um die aktualisierte APK zu erhalten, wodurch die Downloadgröße verringert wird.
Eine APK ist immer signiert. Dies kann böswillige Änderungen am Paket verhindern. Sie möchten auf keinen Fall eine modifizierte App installieren, ohne zu wissen, was geändert wurde oder ob ein Virus eingeschleust wurde. Das META-INF/
Innere der APK funktioniert zu diesem Zweck. Inoffizielle Änderungen führen dazu, dass die Signatur nicht übereinstimmt, und das Android-System lehnt die Installation der modifizierten App ab.
Wenn Sie Ihr Android-Betriebssystem aktualisieren, werden alle Dex-Dateien erneut "optimiert", sodass Sie sie nicht einzeln neu installieren müssen. Wie oben erwähnt, erfordert die Optimierung eine classes.dex
Datei aus dem Originalpaket.
lib/
aus APK extrahiert , iOS hätte nicht alles aus IPA extrahiert. Es ist nur für die grundlegende Integritätsprüfung.