爲您的調試版本啓用android:vmSafeMode
的最佳方式是使用調試清單來補充主AndroidManifest.xml的內容。
要添加這一點,創建一個新的文件…/app/src/debug/AndroidManifest.xml
並添加以下XML:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:vmSafeMode="true" />
</manifest>
增加這個調試清單和安裝應用程序,你應該檢查你的設備的logcat輸出之後,以確保vmSafeMode標誌是在執行dex2oat
進程時正確應用。查找參數--compiler-filter=interpret-only
。 此輸出還報告執行dex2oat
進程所用的時間,以便您可以在進行更改之前和之後進行比較。
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
也可以使用AAPT工具來檢查是否有APK啓用vmSafeMode:
aapt list -a myapkfile.apk
...
A: android:vmSafeMode(0x010102b8)=(type 0x12)0xffffffff
...
我還沒有看到造成除去名列前茅的時間編制錯誤的任何報告。但是,由於性能下降,您的應用程序可能會暴露在進行此更改之前不可見的問題。
這可能是非常密集的處理可能會慢許多倍。如果您的應用適合此類別,最好不要刪除提前編譯。