Wie oft muss Android die APK- und OBB-Dateien einer App dekomprimieren?

Laut einer der großartigen Antworten auf diese Frage muss Android die APK- und OBB-Dateien jeder Anwendung dekomprimieren, bevor die App ausgeführt werden kann.

Wird diese Dekomprimierung jedes Mal durchgeführt, wenn eine App ausgeführt wird, vorausgesetzt, sie wurde aus dem Prozesscache von Android verschoben?

ausführen adb logcat -v longund wenn Ihr Telefon hochfährt, nachdem das Startbild verschwunden ist und der Startbildschirm angezeigt wird, oder direkt davor ... Sie werden eine Menge sehr schneller Informationen sehen, die alle Sounddateitypen wie diesen oder welchen Datentyp auch immer vorbis/obbhaben dekomprimiert werden. Es dauert wahrscheinlich etwa eine Minute, vielleicht weniger.

Antworten (1)

Ja und nein. Android-Apps werden nicht in das Dateisystem dekomprimiert, wenn sie ausgeführt werden müssen. Stattdessen werden sie selektiv dekomprimiert und von der virtuellen Dalvik-Maschine in den Arbeitsspeicher/RAM eingelesen . Diese Dekomprimierung ist ein sehr einfacher, schneller, nicht prozessorintensiver Prozess, sodass dem System kein wirklicher Overhead hinzugefügt wird. Bei der ersten Installation gibt es einige Optimierungen durch die Dalvik-VM, hauptsächlich Verknüpfungen zu nativen Bibliotheken auf dem Android-System zu den internen APK-Bibliotheken, und dies wird im Dalvik-Cache als optimierte Dex-Datei (.odex) gespeichert.

[Nebenbemerkung, deshalb dauert der erste Start eines Telefons länger, da das System Odex-Dateien für jede App erstellen muss, die keine Odex-Datei hat. System-Apps werden normalerweise so erstellt, dass sie vom Hersteller einen Odex haben]

Ein APK hat eine vordefinierte Struktur, einschließlich Dateilisten, Ressourcen, Assets, Bibliotheken, Dex (Java-Klassendateien, die in das ausführbare Dalvik-Format konvertiert wurden) usw. Das System dekomprimiert und liest diese Dateien in den Speicher und folgt dem darin enthaltenen Code. Dieser Code teilt ihm mit, wann die anderen Dateien dekomprimiert und geladen werden sollen.

Es landet nie auf der Festplatte, geht direkt in den Speicher.

Vielleicht möchten Sie hier Informationen über alle Änderungen hinzufügen, die ART hier eingebracht hat.
Ich bin mir nicht sicher, ob ART daran Änderungen vornimmt. Vielleicht der Odex-Teil, aber die allgemeine apk bleibt gleich.
Ich verwende einen alten Desktop, der das Android-Entwicklungskit nicht unterstützt, daher habe ich keine Informationen. Ich weiß, dass Dalvik eine JIT-Kompilierung von Dingen durchgeführt hat, während ART den VM-Bytecode so ziemlich bei der Installation und bei Bedarf beim Neustart in native Anweisungen vorkompiliert. Ob das in die .odex-Datei kommt oder nicht, bin ich mir nicht sicher.