看到标题,很多人也许会问:引入了 自适应图标规范 后,在 Android 8.0 上我们已经可以通过一些第三方 Launcher(比如 Lawnchair、Nova 等等)来修改图标形状。
为什么还要多此一举?
因为通过 Launcher 修改图标形状的效果并不完美。仔细观察,无论我们在哪个 Launcher 中修改图标遮罩为何种形状,多任务卡片、已安装的应用列表、第三方应用所能够读取的应用图标,都依然是圆角矩形。
也就是 Nexus 用户在升级到 Android 8.0 后在默认的 Google Now Launcher 上所看到的那样:
作为一个习惯了 Pixel 圆形图标、想要最大程度上贴近原生体验的强迫症和完美主义者,上面的情况简直不能忍。
那么如何改变这种图标不统一的状况呢?
在 上一篇教程中 我们提到,在 Android 7.x 中,我们可以通过反编译 framework-res.apk、将其中 config_useRoundIcon
的值由 false
修改为 true
来强制启用圆形图标规范。
在 Android 8.0 中,config_useRoundIcon
这个标签虽然还在,但由于自适应图标特性的引入、系统级主题引擎等因素,它已不足以控制全局图标遮罩。
因此我们需要额外修改位于 string
当中的 config_icon_mask
。
需要用到的工具和具体操作如下:
- 已 root 的 Android 8.0 设备
- MT 文件管理器 2.0
首先,参考 @Clyde 的教程,使用 MT 文件管理器定位至 /system/framework
目录,找到 framework-res.apk
这个文件并将其复制到内部储存备用;
点击备用的 framework-res.apk 文件,选择「查看」,在打开的界面定位至 resources.arsc
文件并打开;
在 resources.arsc 的目录中定位至 android -> bool -> bool
标签,找到 config_useRoundIcon
一项,将其数值从 false
修改为 true
;
同样在 resources.arsc 的目录中,定位至 android -> string -> string
标签,找到 config_icon_mask
一项;
可以看到,config_icon_mask
的数值非常复杂,而非 Pixel 设备上全局强制开启的圆角矩形图标遮罩就是由这串字符控制的:
M50,0L92,0C96.42,0 100,4.58 100 8L100,92C100, 96.42 96.42 100 92 100L8 100C4.58, 100 0 96.42 0 92L0 8 C 0 4.42 4.42 0 8 0L50 0Z
我们需要将这段代码精确地、一字不漏地修改为 Pixel 设备中的圆形图标遮罩代码:
M50 0C77.6 0 100 22.4 100 50C100 77.6 77.6 100 50 100C22.4 100 0 77.6 0 50C0 22.4 22.4 0 50 0Z
完成以上两部分修改后,保存并退出编辑。用于开启圆形图标规范的 framework-res.apk 文件就已经修改好了。
接下来我们要做的就是将修改后的 framework-res.apk 替换回去,这里建议大家先将它拷贝至 /system
目录下,修改权限为「rw-r--r--」,然后再移动至 /system/framework
文件夹中进行替换。
替换后重启手机就能看见效果了,这样修改后,无论是多任务卡片上的小图标还是已安装应用列表中的应用图标,都会启用 Pixel 设备上的原型图标遮罩;如果你在启动其中应用圆形图标,整个系统在图标部分就会非常和谐统一。
当然,如果你喜欢其它形状的图标遮罩,也可以按照本文的方法进行修改。前提是——你得知道这种图标遮罩所对应的字符串。
祝大家玩机愉快!