APK na Androida zazwyczaj zawiera te rzeczy.
assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex
Po instalacji plik APK jest kopiowany /data/app
i classes.dex
jest wyodrębniany i „optymalizowany” przez uruchomienie dex2oat
na nim (na Androidzie 5+ lib/
jest również wyodrębniany). Wynik optymalizacji jest zapisywany, /data/dalvik-cache/
więc aplikacja musi zostać zoptymalizowana tylko raz na instalację lub aktualizację . Cała reszta jest przechowywana w APK. Tak więc pierwsza odpowiedź jest bardzo jasne: Takie rzeczy assets
i res
że jest to wymagane przez aplikację musi być zapewnione, a są one wewnątrz APK. Plik APK jest przechowywany w celach pomocniczych. Jeśli usuniesz APK, aplikacja na pewno się nie uruchomi. (Aplikacja: gdzie są moje aktywa?)
Po drugie, Google Play bardzo dawno dodał obsługę „Aktualizacji Delta” . W procedurze aktualizacji delta obliczana jest różnica między starym pakietem a nowym pakietem. Następnie GP pobiera „Delta” i wprowadza zmiany w oryginalnym pliku APK, aby uzyskać zaktualizowany plik APK, zmniejszając w ten sposób rozmiar pliku do pobrania.
APK jest zawsze podpisany. Może to zapobiec złośliwej modyfikacji pakietu. Na pewno nie chcesz instalować modowanej aplikacji bez wiedzy o tym, co się zmieniło lub czy wstrzyknięto wirusa. W META-INF/
tym celu działa APK. Nieoficjalne zmiany spowodują niezgodny podpis, a system Android odmówi zainstalowania zmodyfikowanej aplikacji.
Ponadto, gdy aktualizujesz system operacyjny Android, wszystkie pliki dex są ponownie „optymalizowane”, abyś nie musiał ponownie instalować ich jeden po drugim. Jak wspomniano powyżej, optymalizacja wymaga classes.dex
pliku z oryginalnego pakietu.
lib/
z APK, iOS nie wyodrębniłby wszystkiego z IPA. To tylko dla podstawowej kontroli integralności.