作者:Mr_万能胶
近期研究了一下如何在 aosp 中启用 Material You design,在把踩过的坑记录一下,方便后续有厂商可以快速集成。
本文基于 aosp 最新代码,版本号为 Android 13,并使用 Cuttlefish 快速验证。
Material You design 是什么
Material You design 是 Google 2021年5月18日宣布的最新视觉设计风格,我经常把它简单描述成“你一眼看上去那种扁扁的,彩色的,都是矢量图形的风格”,下面这张图大家看一眼就明白了。
Google 对自己的这套视觉风格一直很自信。这套主题最大的特点就是,它有一个“主题色”的概念。用户选择了一个主题色之后,系统里的大部分控件,只要应用了这套主题,颜色都会跟着变成这个主题色。而除了应用,框架里比如 SystemUI 这样的模块,由于也应用了这套主题,因此也会跟着主题色走。
aosp 在 2021年8月也导入了这套主题,但不知道为什么一直没有默认启用,这篇文章就教大家如何启用。
在框架中启用 Material You design
配置 SystemUI
打开 frameworks/base/packages/SystemUI/res/values/flags.xml
,确保 flag_monet
值为 true
。这一点 aosp 最新版本现在默认值已经为 true
了,作为厂商可以二次确认一下,防止编译时被 overlay
了。
为 ThemePicker
配置权限
Google 把 Pixel 的壁纸选择器脱敏之后,开源在了 packages/apps/ThemePicker
,但是他们似乎把权限配置文件忘记开源了,如果我们直接把 ThemePicker
编进系统,开机之后 system_server
会一直报错如下:
java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions allowlist: {com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.SET_WALLPAPER_COMPONENT, com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.BIND_WALLPAPER, com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.WRITE_SECURE_SETTINGS, com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.READ_WALLPAPER_INTERNAL, com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.MODIFY_DAY_NIGHT_MODE, com.android.wallpaper (/system_ext/priv-app/ThemePicker): android.permission.CHANGE_OVERLAY_PACKAGES}
at com.android.server.pm.permission.PermissionManagerServiceImpl.onSystemReady(PermissionManagerServiceImpl.java:4389)
at