Najlepszym sposobem włączenia android:vmSafeMode
tylko w celu utworzenia debugowania jest użycie manifestu debugowania w celu uzupełnienia zawartości głównego pliku AndroidManifest.xml.
Do tego dodać należy utworzyć nowy plik …/app/src/debug/AndroidManifest.xml
i dodaj następujący xml:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:vmSafeMode="true" />
</manifest>
Po dodaniu tej debug oczywisty i zainstalowaniu aplikacji należy wglądu swoje wyjście logcat urządzenia, aby upewnić się, że flaga vmSafeMode jest bycie poprawnie zastosowany po wykonaniu procesu dex2oat
. Poszukaj argumentu --compiler-filter=interpret-only
. To wyjście informuje również o czasie wykonania procesu dex2oat
, aby można było porównać przed i po wprowadzeniu zmiany.
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
Możliwe jest również użycie narzędzia aapt sprawdzić, jeśli APK ma vmSafeMode włączona:
aapt list -a myapkfile.apk
...
A: android:vmSafeMode(0x010102b8)=(type 0x12)0xffffffff
...
Nie widziałem żadnych raporty błędów powodowanych przez usunięcie z wyprzedzeniem-of-time compilation . Możliwe jednak, że aplikacja może ujawnić problemy, które nie były widoczne przed wprowadzeniem tej zmiany z powodu zmniejszenia wydajności.
Możliwe jest bardzo intensywne przetwarzanie może być powolne wiele razy. Jeśli Twoja aplikacja pasuje do tej kategorii, najlepiej nie usuwać kompilacji z wyprzedzeniem.