Die beste Möglichkeit, android:vmSafeMode
nur für das Debug-Build zu aktivieren, besteht darin, ein Debug-Manifest zu verwenden, um den Inhalt Ihrer Haupt-AndroidManifest.xml zu ergänzen.
dies hinzuzufügen, erstellen Sie eine neue Datei …/app/src/debug/AndroidManifest.xml
und fügen Sie den folgenden xml:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:vmSafeMode="true" />
</manifest>
Nach dem Hinzufügen dieser Debug-Manifest und die App zu installieren Sie Ihr Gerät logcat Ausgang, um sicherzustellen, überprüfen sollen, dass die vmSafeMode Flagge sein wird Wird korrekt angewendet, wenn der Prozess dex2oat
ausgeführt wird. Suchen Sie nach dem Argument --compiler-filter=interpret-only
. Dieser Ausgang gibt auch die Zeit an, die für die Ausführung des Prozesses dex2oat
benötigt wird, damit Sie vor und nach der Änderung vergleichen können.
I/dex2oat﹕ /system/bin/dex2oat --zip-fd=6 --zip-location=/data/app/com.testing.sample.myapp-1/base.apk --oat-fd=7 --oat-location=/data/dalvik-cache/arm/[email protected]@[email protected]@classes.dex --instruction-set=arm --instruction-set-features=div --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=interpret-only --swap-fd=8
I/dex2oat﹕ dex2oat took 1.258ms (threads: 4) arena alloc=0B java alloc=2MB native alloc=502KB free=7MB
Es ist auch möglich, das aapt-Tool zu verwenden, um zu überprüfen, ob eine APK hat vmSafeMode aktiviert:
aapt list -a myapkfile.apk
...
A: android:vmSafeMode(0x010102b8)=(type 0x12)0xffffffff
...
Ich habe keine Berichte über Bugs durch Entfernen der Voraus-Kompilierung verursacht gesehen . Es ist jedoch möglich, dass Ihre Anwendung möglicherweise Probleme aufzeigt, die nicht sichtbar waren, bevor Sie diese Änderung aufgrund der Leistungsminderung vornehmen.
Es ist möglich, sehr intensive Verarbeitung kann um ein Vielfaches langsamer sein. Wenn Ihre App in diese Kategorie passt, sollten Sie die Kompilierung im Voraus nicht entfernen.