Runtime ist eine Umgebung, in der in einer bestimmten Sprache geschriebene Programme ausgeführt werden. Android Runtime (ART) ist eine Java-ähnliche Laufzeit, die Dalvik Executable (DEX) Bytecode (aus apk
Dateien) in einer virtuellen Maschine ausführt. Wie andere Laufzeitumgebungen kann ART den Code in drei verschiedenen Modi ausführen:
- Interpretation
- Just-in-Time (JIT) -Kompilierung
- Ahead of Time (AOT) -Kompilierung
Um die Leistung zu verbessern, übersetzen JIT- und AOT-Compiler DEX-Bytecode (während bzw. vor der Ausführung) in die native Maschinensprache. Der JIT-Compiler war Teil von DVM und wurde in Android 7 auf ART umgestellt. Seitdem unterstützt der AOT-Compiler auch die profilgeführte Hintergrundkompilierung. App-Profile werden während JIT kompilierten Ausführungen erstellt.
Während Interpreter Teil von ART Libraries ist, wird dex2oat
Tool als JIT- und AOT-Compiler verwendet. Dokumentation Staaten:
Zum Zeitpunkt der Installation kompiliert ART Apps mit dem dex2oat-Tool auf dem Gerät. Dieses Dienstprogramm akzeptiert DEX-Dateien als Eingabe und generiert eine kompilierte ausführbare App für das Zielgerät.
Und hier:
JIT und AOT verwenden denselben Compiler mit ähnlichen Optimierungen
Auf Ihrem Marshmallow-ROM Die AOT-Kompilierung funktioniert nicht ohne dex2oat
, was die Leistung der Apps beeinträchtigen kann. Auch der native Dienst installd
und der Java-Dienst PackageManager
verlassen sich bei der App-Installation oder Profilaktualisierung zuvor installierter Apps auf dex2oat
. So können sie aufgrund fehlender Datei brechen.
Zusammenfassend sind installd
oder dex2oat
Abstürze schwerwiegende Fehler in Ihrem ROM, die behoben werden müssen. Das Löschen von dex2oat
Binärdateien ist keine Lösung, sondern eine Problemumgehung, die sehr wahrscheinlich fehlschlägt.
VERWANDT:
- Was wird benötigt, um ELF-Binärdateien auszuführen, die aus Android-APKs kompiliert wurden?