原理
由于安卓设备默认情况下会开启 ART ,因此导致额外的空间占用。
以我的海信 A5 举例,在默认状态下用户应用占用 5G 空间, dalvik-cache 占用2G,而在优化后用户应用占用 3.2G 空间, dalvik-cache 占用 100M。
通过设置,可以避免 ART 生成这些文件,节省存储空间,但是应用启动也会变慢。
参照官方文档可以了解到更多。
基于 ADB 的优化
由于 ADB 功能有限,因此只能通过设置 ART 的编译级别从speed-profile
到interpret-only
来开启优化。
设置所有应用的编译级别命令如下:
adb shell cmd package compile -m interpret-only -a -f
也可以单独设置,<package_name>
替换为包名:
adb shell cmd package compile -m interpret-only <package_name> -f
基于 Root 的优化
有了 Root 权限就方便很多。
1. 修改系统配置
首先设置系统 system.prop
dalvik.vm.dex2oat-very-large=10M
pm.dexopt.install=verify
pm.dexopt.bg-dexopt=verify
pm.dexopt.first-boot=verify
这里我通过修改 scene 的 Magisk 模块的设置达到同样的效果:
/data/adb/modules/scene_systemless/system.prop
-----
# This file will be read by resetprop
# 示例: 更改 dpi
# ro.sf.lcd_density=410
# vendor.display.lcd_density=410
# 修改ART
dalvik.vm.dex2oat-very-large=10M
pm.dexopt.install=verify
pm.dexopt.bg-dexopt=verify
pm.dexopt.first-boot=verify
2. 设置 dex2oat 编译级别
设置所有应用的编译级别为 interpret-only
:
cmd package compile -m interpret-only -a -f
3. 清除 dalvik-cache
清除 dalvik-cache 并重启:
rm -rf /data/dalvik-cache/arm/*
rm -rf /data/dalvik-cache/arm64/*
由于清除了 dalvik-cache ,因此开机需要久一些,请耐心等待。
4. 为一部分程序启动 ART
有一些应用可能在关闭 ART 后启动变得很慢,可以通过设置编译级别为 speed-profile
来重新恢复 ART。
恢复 ART 命令如下,<package_name>
替换为包名
cmd package compile -m speed-profile <package-name> -f
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。