
我发现在针对API 22时,您现在可以停止ART AOT编译:
<application ... androID:vmSafeMode="true"> </application>
我看到了明显的部署速度改进,但是我担心这种改变可能会产生副作用.它必须导致小的运行时性能损失,但启用androID:vmSafeMode选项还有其他任何后果吗?
对于调试版本,是否可以在gradle构建文件中覆盖此属性?或者是创建调试特定的清单文件唯一的解决方案?
解决方法 为您的调试版本启用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输出,以确保在执行dex2oat进程时正确应用vmSafeMode标志.查找参数–compiler-filter = interpre-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/data@app@com.testing.sample.myapp-1@base.apk@classes.dex --instruction-set=arm --instruction-set-features=div --runtime-arg -xms64m --runtime-arg -Xmx512m --compiler-filter=interpret-only --swap-fd=8I/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...
我没有看到任何因删除提前编译而导致的错误的报告.但是,由于性能降低,您的应用程序可能会在进行此更改之前暴露出不可见的问题.
非常密集的处理可能会慢很多倍.如果您的应用符合此类别,则最好不要删除提前编译.
总结以上是内存溢出为你收集整理的覆盖调试版本的android:vmSafeMode属性全部内容,希望文章能够帮你解决覆盖调试版本的android:vmSafeMode属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)