原理

由于安卓设备默认情况下会开启 ART ,因此导致额外的空间占用

以我的海信 A5 举例,在默认状态下用户应用占用 5G 空间, dalvik-cache 占用2G,而在优化后用户应用占用 3.2G 空间, dalvik-cache 占用 100M

通过设置,可以避免 ART 生成这些文件,节省存储空间,但是应用启动也会变慢

参照官方文档可以了解到更多。

基于 ADB 的优化

由于 ADB 功能有限,因此只能通过设置 ART 的编译级别从speed-profileinterpret-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

嘿嘿哟哟
12 声望3 粉丝