这篇博客非常详细,值得一看。请点击查看。
背景
车机整机开发包含一个主题壁纸商店,能够实现动态切换资源的需求。为了实现这一功能,我们选择使用overlay机制。与手机上的操作不同的是,在应用使用主题后,所有指定的应用内资源都需要进行替换。
效果
video-overlay
通过了解,overlay机制比较适合,不需要去改变目标应用本身的结构。不同主题只需要添加不同的主题apk 就行。
实现步骤
- 制作主题apk,overlay项目。
- 应为overlay项目只能配置一个目标,需要fw层作出对应修改。
- fw层 设置主题apk 生效和失效。
制作Overlay项目
目录结构
里面只有资源文件,无代码。需要系统签名。当然资源文件名称,要和目标项目资源名称一致。
清单文件配置
添加overlay 标签,制定目标应用包名。更多标签内容介绍,可以详细百度。这样Overlay apk 就做好了。
安装好之后,可以用命令查看 adb shell dumpsys overlaymIsEnabled 是false ,目前还没有生效,生效和失效的adb命令:
adb shell cmd overlay enable com.example.themoverlaydemo
adb shell cmd overlay disable com.example.themoverlaydemo
一旦启动,mIsEnabled将变为true。OverlayManagerShellCommand是接收命令的类,其路径为/home/frameworks/base/services/core/java/com/android/server/om。
FW层对应的修改
- 配置需要生效的目标应用包名
frameworks/base/core/res/res/values/arrays.xml 添加目标包名
```html
<string-array translatable="false"
还木有评论哦,快来抢沙发吧~